Data e ora: applica corrente o "allora" ora legale?

2

Sto progettando una funzione che con un timestamp UTC lo convertirà all'ora locale.

La domanda che ho, nel caso in cui le impostazioni correnti dell'ora legale vengano applicate alla conversione o le impostazioni DST di data e ora?

Se si va con il primo, l'attuale impostazione dell'ora legale applicata al timestamp - significherebbe che 4pm è stato registrato con DST + 1 sarebbe 3pm con DST + 0 e 4pm con DST + 0, a seconda del periodo dell'anno che hai controllato la data a.

Se vai con quest'ultimo, l'impostazione dell'ora legale verrà applicata ad esso - quindi le 4pm registrate con l'ora legale + 1 diranno sempre le 4pm, indipendentemente dal periodo dell'anno in cui l'hai controllato.

Quale è più preferibile in pratica?

    
posta Vadi 15.09.2013 - 00:35
fonte

1 risposta

6

Utilizza le impostazioni dell'ora legale applicabili al timestamp. Ciò applicherà le regole di conversione corrette. Ad esempio, se utilizzo lo stato dell'ora legale corrente, a gennaio l'ora locale verrà convertita in modo non corretto, poiché attualmente sono in DST e gennaio utilizza ST qui.

La maggior parte delle lingue ha già una funzione o un metodo per effettuare la conversione. A meno che tu non abbia forti motivi per scrivere il tuo, usalo. Questo codice dovrebbe fornire un modo per determinare se il timestamp è DST o ST.

Molti protocolli utilizzano un formato che include l'offset da UTC, come suffisso. Ad esempio:

Delivery-date: Sat, 14 Sep 2013 06:47:18 -0400

Ci sono molte insidie nello scrivere il tuo codice:

  • Le regole cambiano di volta in volta.
  • Spesso il cambiamento del fuso orario non viene eseguito a mezzanotte.
  • Le regole possono essere diverse per località diverse nello stesso fuso orario.
  • I secondi di salto possono essere inclusi o meno nei timestamp.

Il database dei fusi orari Olson contiene una serie di regole accurata e viene frequentemente aggiornato.

    
risposta data 15.09.2013 - 05:02
fonte

Leggi altre domande sui tag