Ich bin so lächerlich frustriert, DateTime-Werte für Datensätze verwenden zu müssen, die wirklich "nur ein Tag" sind. Geburtstage sind das häufigste Beispiel, aber dies kommt in Geschäftsanwendungen immer wieder vor.
Ich habe mich daran gewöhnt, den Zeitteil von "Nur-Datum" -Datensätzen auf "Mittag" zu setzen (wodurch vermieden wird, dass sich das Datum unabhängig von der Zeitzone ändert). Dies scheint ein Hack zu sein, und ich finde immer wieder Bugs von Junior-Entwicklern, die sich mit diesem Problem befassen.
Die Zeit ist immer relativ zu einem festen Punkt. 16 Uhr ist 4 Stunden nach dem Meridian oder Mittag. Der höchste Transitpunkt der Sonne ist beobachtbar und ermöglicht die Einrichtung eines Koordinatensystems. 3 Stunden vor Mittag (Ante Meridian), 2 Stunden nach Mittag, 1441899402938 Millisekunden seit dem 1. Januar 1970. Für Menschen, die in einer kartesischen Welt aufwachsen, ist dies eine zweite Natur.
Unser Kalender ist jedoch älter als Descartes. Mein Argument ist, dass es eher als eine Aufzählung aufgefasst wird, auf die eine Modulo-Funktion angewendet wird. Montag folgt auf Sonntag und so weiter, bis Sie feststellen, dass Sonntag auf Samstag folgt. Es gibt kein positives und negatives, es ist ein Modul oder ein absoluter Wert.
Ähnlich mit Jahren zu wiederholen. Alle 365 Tage (oder so) gibt es einige besondere Tage für mich: Geburtstage, Jahrestage, Kindergeburtstage usw. usw. In den Anwendungen für die Geschäftsplanung gibt es viele Beispiele für Besprechungen alle sieben Tage, am ersten Dienstag im Monat usw. Nur weil wir KÖNNEN dies auf eine Gleitkommazahl abbilden, und in Wahrheit löst das Abbilden auf diese Zahl VIELE Probleme, die auf die alte Weise wirklich schwierig sind, aber das bedeutet nicht, dass es die einzige Möglichkeit ist, dies zu tun.
Meiner Meinung nach sind Sie ein besserer Programmierer, wenn Sie wissen, wie DateTimes zum Speichern von Datumsangaben verwendet wird.
Gibt es in einer Anwendung einen Wert, der ausdrücklich als Planungsanwendung für die Definition einer Datumsklasse gedacht ist, oder ist "Alle Zeiten auf Mittag setzen" der beste Ansatz? Welche Probleme können bei der Verwendung von DateTime und dem Festlegen der Zeitkomponente auf Noon auftreten? Kann die Zeitverschiebung in einem solchen Ansatz berücksichtigt werden? Ich habe MomentJS verwendet, aber ich denke, das ist nur eine bessere Date-Klasse.