Cambio dell'ora in Paraguay 2010
Il Governo paraguaiano ha deciso di modificare la data di entrata in vigore dell’ora invernale in tutta la repubblica. Con il decreto precedente, in vigore dal 2004, l’ora andava spostata indietro di 60 minuti la seconda domenica di marzo (14/mar quest’anno) e di nuovo avanti di 60 minuti la terza domenica di ottobre (17/ott quest’anno).
Con il nuovo decreto cambia in: spostare l’ora indietro di 60 minuti la seconda domenica di aprile (11/apr quest’anno) e di nuovo avanti di 60 minuti la prima domenica di ottobre (3/ott quest’anno).
Riferimenti:
http://www.abc.com.py/abc/nota/78024-En-abril-se-atrasa-la-hora/
http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf
Bene, cosa comporta questo per chi lavora con sistemi unix?. Una macchina unix mantiene l’ora interna del sistema in UTC e regola l’ora locale in base al fuso orario. Per questo si usa il database Olson, che registra i diversi fusi orari e le regole per il passaggio all’ora legale (daylight saving transition o DST), dove previsto.
L’ultima versione di questo database si può scaricare da ftp://elsie.nci.nih.gov/pub/tzdata*.tar.gz. Se non abbiamo la fortuna che questa nuova legislazione sia già recepita, dobbiamo fare le modifiche a mano.
Nel nostro caso, dobbiamo limitare l’ultima regola (quella che inizia nel 2004) al 2009 e aggiungere una nuova regola in vigore dal 2010 fino alla “fine dei tempi”. Probabilmente non sarà l’ultima regola da aggiungere, ma finché non ce ne sarà una nuova, dovrebbe restare in vigore a tempo indeterminato.
Così sarebbe senza i commenti:
# Paraguay
Rule Para 1975 1988 - Oct 1 0:00 1:00 S
Rule Para 1975 1978 - Mar 1 0:00 0 -
Rule Para 1979 1991 - Apr 1 0:00 0 -
Rule Para 1989 only - Oct 22 0:00 1:00 S
Rule Para 1990 only - Oct 1 0:00 1:00 S
Rule Para 1991 only - Oct 6 0:00 1:00 S
Rule Para 1992 only - Mar 1 0:00 0 -
Rule Para 1992 only - Oct 5 0:00 1:00 S
Rule Para 1993 only - Mar 31 0:00 0 -
Rule Para 1993 1995 - Oct 1 0:00 1:00 S
Rule Para 1994 1995 - Feb lastSun 0:00 0 -
Rule Para 1996 only - Mar 1 0:00 0 -
Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S
Rule Para 1997 only - Feb lastSun 0:00 0 -
Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S
Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 S
Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
Rule Para 2010 max - Oct Sun>=1 0:00 1:00 S
Rule Para 2010 max - Apr Sun>=8 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Asuncion -3:50:40 - LMT 1890
-3:50:40 - AMT 1931 Oct 10 # Asuncion Mean Time
-4:00 - PYT 1972 Oct # Paraguay Time
-3:00 - PYT 1974 Apr
-4:00 Para PY%sT
Salviamo queste righe in un file di testo semplice da compilare in seguito: /root/america_asuncion.zone
Per i seguenti unix e unix-like, descrivo la procedura per verificare la data del cambio d’ora e per correggerla.
Linux
- Stato iniziale
| # zdump -v America/Asuncion | grep 2010 |
- Creare un file con il contenuto elencato sopra
# vi /root/america_asuncion.zone
- Compilare il fuso orario
# zic /root/america_asuncion.zone
- Verificare le modifiche, l’output dovrebbe differire da quello originale
| # zdump -v America/Asuncion | grep 2010 |
- Copiamo la zona in /etc/localtime. Una volta si usava un link simbolico, ma a volte dava problemi di “file non trovato” quando /usr era un filesystem separato.
# cp /usr/share/zoneinfo/America/Asuncion /etc/localtime
Solaris
- Stato iniziale
| # zdump -v America/Asuncion | grep 2010 |
- Creare america_asuncion.zone
# vi /root/america_asuncion.zone
- Compilare le regole
# zic /root/america_asuncion.zone
- Verificare le modifiche
| # zdump -v America/Asuncion | grep 2010 |
- Assicurarsi che il sistema usi la zona corretta:
# grep TZ= /etc/TIMEZONE
TZ=America/Asuncion
Tru64
- Verificare lo stato iniziale
| # zdump -v America/Asuncion | grep 2010 |
- Creare il file con le regole
# vi /root/america_asuncion.zone
- Compilare il file delle regole
# zic /root/america_asuncion.zone
- Verificare le modifiche
| # zdump -v America/Asuncion | grep 2010 |
HPUX
Bene, non usa il database Olson e mantiene le proprie regole per il DST.
- Controllare lo stato attuale, per questo passaggio serve lo script dst.pl, che si può scaricare dai forum di HP
Rif:
http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=1089676
http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1267560461229+28353475&threadId=1007176
# ./dst.pl
- Modifichiamo il file di sistema che contiene le regole
# vi /usr/lib/tztab
- Aggiungiamo alla fine del file:
# Horario normal es PYT con diferencia GMT-4, el horario de verano es PYST con diferencia GMT-3.
PYT4PYST
# Minuto - Hora - Dia - Mes - Año - Dia Semana.
0 23 8-14 4 2010-2038 6 PYT4
0 1 1-7 10 2010-2038 0 PYST3
- Definiamo il fuso orario
# vi /etc/TIMEZONE
TZ=PYT4PYST
export TZ
- Verifichiamo le modifiche
# ./dst.pl
Osservazione.
Alcuni processi che girano in continuazione possono richiedere un riavvio dopo questa modifica. Uno di questi sarebbe crond.
E questo è tutto, ora i nostri sistemi tengono conto della nuova regola in vigore da quest’anno.
Modifica questo articolo su GitHub · hai trovato un errore? Le pull request sono benvenute.