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

9

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

Ad esempio, se dovessi impostare una scadenza datetime come 2011-04-08 00:00:00 - e dato che l'ora locale corrente è 10:45 già l'ottavo - sono già scaduto? O ho ancora mezza giornata o sinistra?

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

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

    
posta HorusKol 08.04.2011 - 03:18
fonte

3 risposte

17

Penso che nella programmazione (oracle e php, non sono sicuro di altre lingue), la mezzanotte è l'inizio di un giorno. Ad esempio se si tronca (sysdate) riceverai 2011-04-08 00:00:00 che è il nostro passato.

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

    
risposta data 08.04.2011 - 03:28
fonte
3

Un addendum alla risposta di @Phelios, se hai un tempo come 00:00:00, questo non è necessariamente esattamente mezzanotte. Piuttosto, è un insieme infinito di punti nel tempo, che hanno tutti una distanza massima di < 1 secondo l'un l'altro. Ad esempio, tutti 00: 00: 00.345, 00: 00: 00.567 e 00: 00: 00.842 giacciono chiaramente sul lato diurno della mezzanotte, ma a breve verranno "00:00:00" per la visualizzazione. Allo stesso modo, 23: 59: 59: 899 si trova nella parte vecchia della mezzanotte. Quindi la mezzanotte stessa è un intervallo infinitamente breve tra i giorni in cui non avrai mai colpito in pratica.

    
risposta data 11.05.2011 - 13:23
fonte
1

Questo è un problema simile al calcolo delle differenze tra gli angoli usando la geometria circolare, dove per 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 gradi o 340 gradi. Ma fare il calcolo per le differenze angolari è in realtà piuttosto complicato. I calcoli della differenza di orario sono altrettanto disordinati a meno che non si converta in una forma interna che faccia in modo normale un'operazione di addizione e sottrazione. Oppure usi una biblioteca di classe moderna che nasconde magicamente tutto via da te (e quindi non insegna mai nessuno sui dettagli reali).

    
risposta data 08.04.2011 - 03:36
fonte

Leggi altre domande sui tag