Metodologia Data e Ora — Calendari, Giorni della Settimana e Standard ISO | MrCalculators

Metodologia Data e Ora

I nostri strumenti per date e ore si basano sul calendario gregoriano prolettico, sulla regola dei giorni della settimana di Zeller e sullo standard ISO 8601 per la rappresentazione e la numerazione delle settimane. Questa pagina documenta le formule applicate, gli standard seguiti e i casi limite (giorni bisestili, secondi intercalari, transizioni dell'ora legale, convenzioni locali per i giorni della settimana) che gestiamo esplicitamente perché i risultati restino riproducibili e verificabili.

Formule e regole utilizzate

Regola degli anni bisestili gregoriana

Un anno è bisestile se è divisibile per 4, eccetto per gli anni di secolo, che devono essere divisibili anche per 400. Quindi il 2000 è bisestile, mentre il 1900 e il 2100 non lo sono. Applichiamo questa regola in modo prolettico, cioè la estendiamo all'indietro anche prima del 1582 per garantire coerenza aritmetica su lunghi intervalli temporali.

Congruenza di Zeller per il giorno della settimana

Per mappare una data gregoriana al giorno della settimana senza iterare, usiamo la congruenza di Zeller: h = (q + floor(13(m+1)/5) + K + floor(K/4) + floor(J/4) + 5J) mod 7, dove gennaio e febbraio sono trattati come mesi 13 e 14 dell'anno precedente. L'output è poi normalizzato alla numerazione dei giorni ISO, in cui lunedì è 1 e domenica è 7.

Formato data ISO 8601

Mostriamo le date canoniche come YYYY-MM-DD e le date-ora combinate come YYYY-MM-DDTHH:MM:SS con offset esplicito (Z per UTC, ±HH:MM altrimenti). È un formato non ambiguo tra le diverse localizzazioni, si ordina lessicograficamente in ordine cronologico e corrisponde al formato che la maggior parte di API e database memorizza nativamente.

Conteggio dei giorni lavorativi

I giorni lavorativi escludono il sabato e la domenica. Permettiamo agli utenti di escludere facoltativamente un elenco di festività, applicato dopo il filtro del fine settimana. Per intervalli che attraversano mesi o anni contiamo iterando settimane intere più un resto, in modo che intervalli molto lunghi restino O(1) per calcolo invece di scorrere ogni singolo giorno.

Numerazione delle settimane ISO

Le settimane ISO iniziano di lunedì e la settimana 1 di un anno è quella che contiene il primo giovedì (equivalentemente, la settimana che contiene il 4 gennaio). Gli anni hanno quindi 52 o 53 settimane ISO e i primi o gli ultimi giorni di un anno gregoriano possono appartenere a una settimana-anno ISO adiacente. Etichettiamo queste date come YYYY-Www-D usando la settimana-anno ISO, non l'anno di calendario.

UTC e politica sui secondi intercalari

Tutti gli istanti sono memorizzati in UTC. UTC è mantenuto dal BIPM in cooperazione con i laboratori metrologici nazionali e i secondi intercalari sono annunciati dal Bollettino C dell'IERS quando necessario per mantenere UTC entro 0,9 secondi da UT1. La nostra aritmetica delle durate assume 86.400 secondi SI per giorno e non inserisce i secondi intercalari, in linea con il comportamento del tempo POSIX e della maggior parte dei sistemi operativi.

Come revisioniamo e aggiorniamo

La logica del calendario è coperta da test automatici che includono anni bisestili (1900, 2000, 2024), confini di settimana-anno ISO (dal 29 dicembre al 3 gennaio) e giorni di transizione dell'ora legale in entrambi gli emisferi. Quando l'IERS annuncia un nuovo secondo intercalare, aggiorniamo la documentazione interna ma lasciamo invariata l'aritmetica UTC, perché le aspettative degli utenti sul calcolo di giorni e ore trascorse coincidono con il modello POSIX. Ricontrolliamo questa pagina di metodologia dopo ogni revisione di ISO 8601 e comunque almeno una volta all'anno.

Errori comuni

  • Gestione dei secondi intercalari. Un secondo intercalare aggiunge 23:59:60 UTC nell'ultimo giorno di giugno o dicembre, quando inserito. Poiché la nostra aritmetica delle durate tratta ogni giorno come composto da 86.400 secondi (come POSIX), le differenze che attraversano un giorno con secondo intercalare saranno sfalsate di un secondo rispetto a un conteggio in vero secondo SI. Per la pianificazione quotidiana questo è invisibile; per la cronometria scientifica al di sotto del secondo, consultate una fonte di tempo conforme a IERS.
  • Numerazione delle settimane ISO vs USA. La settimana 1 ISO è quella del primo giovedì e le settimane iniziano di lunedì. La convenzione statunitense spesso considera settimana 1 quella che contiene il 1° gennaio e inizia la settimana di domenica. I due sistemi non concordano spesso di una settimana a gennaio e a dicembre, quindi verificate sempre quale numerazione usa un report prima di confrontare valori.
  • Giorni di transizione dell'ora legale. Nei giorni di spring-forward un giorno locale ha 23 ore; nei giorni di fall-back ne ha 25. I calcoli effettuati in ora locale possono quindi produrre un errore di un'ora e un timestamp come 02:30 nel giorno di fall-back è ambiguo. Evitiamo il problema eseguendo tutta l'aritmetica in UTC e convertendo in ora locale solo per la visualizzazione.
  • Giorno della settimana locale vs giorno della settimana ISO. I numeri ISO dei giorni della settimana vanno da lunedì (1) a domenica (7). Molte localizzazioni e i fogli di calcolo di default numerano domenica come 1 e sabato come 7. Mescolare i due sistemi nella costruzione di formule (ad esempio nel conteggio dei giorni lavorativi) sposta silenziosamente i risultati di un giorno, perciò specifichiamo sempre quale numerazione ci aspettiamo in input.
  • Gregoriano prolettico per date storiche. Prima del 1582 nella maggior parte dell'Europa (e più tardi in alcuni Paesi) era in uso il calendario giuliano. I nostri strumenti estendono all'indietro la regola gregoriana per coerenza aritmetica, il che significa che una data 'storica' inserita non corrisponderà alla data registrata nei documenti dell'epoca. Trattate i risultati anteriori al 1582 come una convenzione matematica, non come un'affermazione storica.

Glossario

UTC
Tempo Coordinato Universale, lo standard temporale primario, mantenuto dal BIPM in collaborazione con i laboratori metrologici nazionali.
UT1
Una scala temporale basata sull'angolo di rotazione terrestre. UTC è mantenuto entro 0,9 secondi da UT1 mediante secondi intercalari.
Secondo intercalare
Un secondo aggiuntivo inserito in UTC, annunciato dal Bollettino C dell'IERS, per mantenere UTC allineato con UT1.
Anno bisestile
Un anno gregoriano di 366 giorni. Divisibile per 4, eccetto gli anni di secolo che devono essere divisibili anche per 400.
ISO 8601
Lo standard internazionale per la rappresentazione di date, ore, durate e intervalli in forma indipendente dalla localizzazione.
Data settimanale ISO
Un formato di data YYYY-Www-D in cui la settimana 1 è quella che contiene il primo giovedì e lunedì è il giorno 1.
Settimana-anno
L'anno cui appartiene una data settimana ISO. Può differire dall'anno gregoriano in prossimità del 1° gennaio o del 31 dicembre.
Calendario gregoriano prolettico
Il calendario gregoriano esteso a ritroso prima della sua adozione nel 1582, usato per coerenza aritmetica.
Calendario giuliano
Il calendario in uso comune in Europa prima del 1582, con una regola degli anni bisestili più semplice (ogni quattro anni).
Congruenza di Zeller
Un'espressione aritmetica in forma chiusa che restituisce il giorno della settimana di qualsiasi data gregoriana senza iterazione.
Tempo POSIX
Secondi trascorsi dal 1970-01-01T00:00:00Z, ignorando i secondi intercalari. Base di gran parte degli orologi di sistema operativo.
Ora legale (DST)
Una convenzione dell'ora locale che sposta gli orologi di un'ora per parte dell'anno, producendo giorni locali di 23 e 25 ore in corrispondenza delle transizioni.
Offset orario
La differenza con segno tra un'ora locale e UTC, scritta come ±HH:MM (ad esempio, +01:00 per l'Italia in ora solare).
BIPM
Bureau International des Poids et Mesures, l'organismo intergovernativo che mantiene UTC e il secondo SI.
IERS
International Earth Rotation and Reference Systems Service, che monitora la rotazione terrestre e annuncia i secondi intercalari.