Ignorieren time-of-day
Nur wenige Menschen die Zeit-of-Tag ihrer Geburt wissen. Also, nein, diese Detailebene wird nicht allgemein verfolgt. Auf Pässen und dergleichen sehen Sie nie Geburtszeit und Geburtszeitzone. Sie verfolgen einen Nur-Datum-Wert ohne Tageszeit und ohne Zeitzone.
Barkeeper, Grenzkontrollagenten usw. verwenden das lokale aktuelle Datum, um das Alter zu berechnen, ohne dass versucht wird, die Tageszeit zu berücksichtigen oder die Zeitzone anzupassen. Berücksichtigen Sie, dass der Unterschied zwischen den Teilen des Tages abgeschnitten und ignoriert wird.
Um einen Zeitpunkt von einer Zeitzone zur anderen genau einzustellen, benötigen Sie ein Datum und eine Uhrzeit. Ohne eine Tageszeit haben Sie vielleicht 23-25 Stunden möglicher Momente, in denen ihre Geburt stattgefunden haben könnte. Eine Geburt, die in Paris (1 oder 2 Stunden vor UTC) am 24. stattfindet, ist in Montréal noch "gestern", die 23. in Montréal (4 oder 5 Stunden hinter UTC). Aber wenn diese Geburt um 06:00 Uhr am 24. auftritt, dann ist das Datum das gleiche (24.) in beiden Paris & Montreal, aber ist "gestern" (23.) in Vancouver BC und Seattle, wo die Uhren 7 oder 8 Stunden zurück sind KOORDINIERTE WELTZEIT.
SQL
In SQL verwenden, um einen Datentyp ähnlich den Standard-DATE-Typen.
Java
In Java, verwenden Sie die LocalDate
Typ. Verwenden Sie die MonthDay
Klasse, um den wiederkehrenden Monat und Tag der Geburtstagsfeier darzustellen.
Für Interaktion mit einer Datenbank, Treiber, die 4.2 mit JDBC entsprechen soll direkt arbeiten kann mit LocalDate
über die getObject
& setObject
Methoden auf einem PreparedStatement
. Wenn nicht, greifen Sie auf die alte java.sql.Date
zurück. Neue Methoden, die dieser alten Klasse hinzugefügt wurden, erleichtern die Konvertierung.
ISO 8601
Wenn Stringdarstellungen von Datum-Zeit-Werte zu erzeugen, verwenden Sie die Formate in der ISO 8601 Standard wie YYYY-MM-DD
, ex definiert: 1960-07-11
. Für das Datum ohne Jahr verwenden Sie --MM-DD
, zB: --07-11
. Die java.time-Klassen in Java verwenden beim Analysieren und Generieren von Strings standardmäßig ISO 8601-Formate.
Erzwingen time-of-day
Wenn aus irgendeinem Grund Sie gezwungen sind, ein Datum-only-Wert in ein Datum-Zeit-Feld zu setzen, dann müssen Sie einige beliebige Zeit-of-Tag. Mittag ist eine Möglichkeit. Ich schlage vor, den Zeitabschnitt auf den ersten Moment des Tages einzustellen.
erste Moment des Tages
Beachten Sie, dass der erste Moment nicht ist immer 00:00:00
. Sommerzeit (DST) und möglicherweise andere Anomalien beeinflussen Mitternacht in einigen Zeitzonen. So könnte der erste Moment des Tages 01:00:00
zum Beispiel sein. Java kann den ersten Moment des Tages für eine bestimmte Zeitzone bestimmen.
ZoneId zoneId = ZoneId.of("America/Montreal");
LocalDate today = LocalDate.now(zoneId);
ZonedDateTime startOfToday = today.atStartOfDay(zoneId);
Welche Sprache verwenden Sie? –
Ich verwende UTC, um die Millisekunden zu speichern. aber wenn sie in der Benutzeroberfläche angezeigt werden, werden sie natürlich auf die Gebietsschemazeit übertragen. – Mulgard
OK, jetzt wissen wir, dass Sie einige UI-Sachen machen. JavaScript? Vielleicht Angular oder JQuery? Komme ich näher? –