Wenn Sie über Datum und Uhrzeit nachdenken - ist heute Mitternacht in der Vergangenheit oder Zukunft?

9

Dies ist für mich immer ein Rätsel - und mir ist klar, dass es sich nicht ausschließlich um ein Problem bei der Programmierung oder Softwareentwicklung handelt, aber es scheint in unserem Bereich ein vernünftiges Problem zu sein.

Wenn ich beispielsweise ein Ablaufdatum als 2011-04-08 00:00:00 festlegen würde - und meine aktuelle Ortszeit bereits am 8. um 10:45 Uhr ist - bin ich bereits abgelaufen? Oder habe ich noch einen halben Tag oder so?

Gibt es einen universellen Standard, zu dem das Ende des Tages Mitternacht gehört?

Oder sollte ich dem britischen Militär ein Blatt abnehmen und sagen, dass der Tag um 23:59:59 endet und um 00:00:01 beginnt und dass es keine Mitternacht gibt?

HorusKol
quelle
warte warte, wo ist dein Standort? Welches Datum ist jetzt? 08 oder 07?
Sufendy
sry - machte klarer, dass ich bereits am 8. bin (ich bin in Adelaide, SA)
HorusKol
1
Sie fragen sich also im Grunde, ob 00:00:00 kleiner oder größer als 10:45:00 ist?
Martin York
Ich würde das Blatt nehmen. Viele Organisationen, die sich mit Zeitplänen befassen, vermeiden 00:00:00 (und 12:00:00). Es gibt auch einige Verwirrung über AM / PM-Bezeichner für jene Länder, die keine 24-Stunden-Uhren verwenden.
Dbasnett
In einigen Kontexten 24:00:00wird Mitternacht am Ende des Tages beschrieben.
CodesInChaos

Antworten:

17

Ich denke, beim Programmieren (Orakel und PHP, nicht sicher, ob es sich um andere Sprachen handelt) ist Mitternacht der Beginn eines Tages. Wenn Sie beispielsweise abschneiden (sysdate), erhalten Sie 2011-04-08 00:00:00, was unsere Vergangenheit ist.

Wenn sich die Uhr von 23:59:59 auf 00:00:00 änderte, änderte sich das Datum tatsächlich von 2011-04-08 auf 2011-04-09

Sufendy
quelle
2
Ja, der Tag beginnt um Mitternacht, also um 00:00:00 Uhr.
schnell_now
Das ist richtig AFAIK. Eine Verwirrung könnte sein, dass in der Gelegenheitssprache "Mitternacht heute" wahrscheinlich Mitternacht am Ende des heutigen Tages bedeutet, da dies eher vor dem Schlafengehen als nach dem Aufwachen der Fall ist.
Jack V.
3

Ein Nachtrag zu @Phelios 'Antwort: Wenn Sie eine Zeit wie 00:00:00 haben, ist dies nicht unbedingt genau Mitternacht. Vielmehr handelt es sich um eine unendlich große Menge von Zeitpunkten, die alle einen maximalen Abstand von <1 Sekunde zueinander haben. Beispielsweise liegen alle 00: 00: 00.345, 00: 00: 00.567 und 00: 00: 00.842 eindeutig auf der Neujahrsseite von Mitternacht, würden jedoch zu Anzeigezwecken auf "00:00:00" gekürzt. Ebenso liegt 23: 59: 59: 899 auf der alten Seite von Mitternacht. Mitternacht selbst ist also eine unendlich kurze Zeitspanne zwischen den Tagen, die Sie in der Praxis niemals treffen werden.

T-Bull
quelle
Dies ist ein Mal, dass es wichtig ist, den Unterschied zwischen Theorie und "angeblicher" Praxis herauszustellen : In der Praxis könnte ein Benutzer, der ein Datum / eine Uhrzeit eingibt, kaum die Mühe haben, die Sekunden einzugeben; geschweige denn Millisekunden. In der Praxis unterstützt ein Zeitmessgerät, das die Zeit eines Ereignisses bestimmt, möglicherweise keine Millisekunden. Selbst wenn ein Zeitmessgerät Millisekunden unterstützt, gibt es in der Praxis keine Garantie dafür, dass das Speicherformat aus irgendeinem Grund einen Teil der Zeit nicht rundet / abschneidet.
Desillusioniert
1

Dies ist ein ähnliches Problem wie bei der Berechnung von Winkeldifferenzen unter Verwendung einer Kreisgeometrie, bei der beispielsweise 0 Grad und 360 Grad (und 720 Grad usw.) alle gleich sind. Was ist der Unterschied zwischen 350 und 10 Grad?

Antwort: Es hängt davon ab, in welcher Richtung Sie es messen möchten - es kann 20 Grad oder 340 Grad sein. Die Berechnung der Winkeldifferenzen ist jedoch ziemlich chaotisch. Zeitdifferenzberechnungen sind ähnlich unübersichtlich, es sei denn, Sie konvertieren in eine interne Form, bei der die einfache Addition und Subtraktion konventionell funktioniert. Oder Sie verwenden eine moderne Klassenbibliothek, die alles auf magische Weise vor Ihnen verbirgt (und somit niemals jemandem die tatsächlichen Details beibringt).

schnell_now
quelle
In beiden Fällen geben Sie nur einen Weg rund um die Uhr (oder einen Kreis) als "positiv" an
HorusKol
Wahr. Das Schreiben des Codes, um die Berechnung durchzuführen und jedes Mal richtig zu machen, erfordert jedoch ein wenig Nachdenken.
schnell_now