Quando si pensa a date e orari, oggi è mezzanotte nel passato o nel futuro?


9

Questo è sempre un enigma per me, e mi rendo conto che non è strettamente un problema nella programmazione o nello sviluppo di software, ma sembra essere un ragionevole comune nel nostro campo.

Ad esempio, se dovessi impostare un datetime di scadenza come 2011-04-08 00:00:00 - e dato che la mia ora locale attuale è già alle 10:45 dell'8 - sono già scaduto? O mi resta ancora mezza giornata?

Esistono standard universali per i quali la mezzanotte di fine giornata "appartiene"?

O dovrei prendere una foglia dai militari britannici e dire che la giornata termina alle 23:59:59 e inizia alle 00:00:01 e che non c'è mezzanotte?


aspetta aspetta, dov'è la tua posizione? che data è adesso? 08 o 07?
Sufendy,

sry - ha chiarito che sono già l'8 (sono ad Adelaide, SA)
HorusKol

1
Quindi in pratica stai chiedendo che 00:00:00 sia più piccolo o più grande di 10:45:00?
Martin York,

Prenderei la foglia. Molte organizzazioni che si occupano degli orari evitano le 00:00:00 (e le 12:00:00). C'è anche un po 'di confusione sui designatori AM / PM per quei paesi che non usano orologi a 24 ore.
dbasnett,

In alcuni contesti 24:00:00viene usato per descrivere la mezzanotte alla fine della giornata.
CodesInChaos,

Risposte:


17

Penso che nella programmazione (oracolo e php, non sono sicuro di altre lingue), la mezzanotte è l'inizio di una giornata. Ad esempio, se tronchi (sysdate) otterrai 2011-04-08 00:00:00 che è il nostro passato.

quindi, quando l'orologio è cambiato dalle 23:59:59 alle 00:00:00, la data è effettivamente cambiata dal 2011-04-08 al 2011-04-09


2
Sì, il giorno termina a mezzanotte, che è 00:00:00.
quick_now

Questo è AFAIK corretto. Una confusione potrebbe essere che nel discorso casuale, "mezzanotte oggi" probabilmente significa mezzanotte alla fine di oggi, perché è più probabile che sia prima che le persone vadano a letto, che dopo essersi svegliati.
Jack V.

3

Un addendum alla risposta di @Phelios, se hai un orario come 00:00:00, questa non è necessariamente esattamente mezzanotte. Piuttosto, è un insieme infinitamente ampio di punti nel tempo, che hanno tutti una distanza massima di <1 secondo l'uno dall'altro. Ad esempio, tutti 00: 00: 00.345, 00: 00: 00.567 e 00: 00: 00.842 si trovano chiaramente sul lato di mezzanotte del nuovo giorno, ma verrebbero abbreviati in "00:00:00" per scopi di visualizzazione. Allo stesso modo, 23: 59: 59: 899 si trova sul lato antico della mezzanotte. Quindi la stessa mezzanotte è un intervallo di tempo infinitamente breve tra i giorni che non colpirai mai in pratica.


Questa è una volta è importante sottolineare la differenza tra teoria e pratica "presunta" : in pratica un utente che digita una data / ora potrebbe a malapena essere disturbato a digitare i secondi; figuriamoci millisecondi. In pratica, un dispositivo di temporizzazione che determina l'ora di un evento potrebbe non supportare millisecondi. In pratica, anche se un dispositivo di temporizzazione supporta millisecondi, non c'è alcuna garanzia che il formato di archiviazione non arrotoli / tronchi una parte del tempo per qualche motivo.
Disilluso il

1

Questo è un problema simile al calcolo delle differenze tra gli angoli usando la geometria circolare, dove ad esempio 0 gradi e 360 ​​gradi (e 720 gradi, ecc.) Sono tutti uguali. Quindi qual è la differenza tra 350 gradi e 10 gradi?

Risposta: dipende dal modo in cui vuoi misurarlo: potrebbe essere di 20 o 340 gradi. Ma fare il calcolo per le differenze angolari è in realtà abbastanza confuso. I calcoli delle differenze temporali sono ugualmente disordinati a meno che non si converta in un modulo interno che fa in modo che le normali addizioni e sottrazioni funzionino in modo convenzionale. Oppure usi una moderna biblioteca di classe che nasconde magicamente tutto lontano da te (e quindi non insegna a nessuno i dettagli reali).


in entrambi i casi, specifichi solo un modo 24 ore su 24 (o cerchio) come "positivo"
HorusKol

Vero. Tuttavia, scrivere il codice per eseguire il calcolo e farlo correttamente ogni volta richiede un piccolo pensiero.
quick_now
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.