Pagina 1 di 1
[SOLVED] Comando "date" per incrementare di un'ora
Inviato: ven 4 mar 2016, 21:34
da joe
Considerate il seguente comando.
Codice: Seleziona tutto
date '+%m/%d/%Y %H:%M' --date '04/29/2015 01:00 +1 hour'
In pratica voglio prendere la data 29 aprile 2015 alle ora 1:00 e incrementarla di un'ora.
Mi aspetterei come risultato:
Vi torna?
E invece ecco cosa mi restituisce:
Codice: Seleziona tutto
$ date '+%m/%d/%Y %H:%M' --date '04/29/2015 01:00 +1 hour'
04/29/2015 03:00
Cioè, ha incrementato di 2 ore ...
EDIT:
Spetta un po'....
Vuoi vedere che è l'orario legale?!?!?!?
Sto trafficando con dati del 2015... e vuoi vedere che il comando date sballa proprio quando è cambiata l'ora...
Mi confermate?
Re: Comando "date" per incrementare di un'ora. Ma sbaglia
Inviato: sab 5 mar 2016, 8:20
da conraid
Togli il + all'ora aggiunta
Re: Comando "date" per incrementare di un'ora. Ma sbaglia
Inviato: sab 5 mar 2016, 9:19
da targzeta
joe ha scritto:EDIT:
Spetta un po'....
Vuoi vedere che è l'orario legale?!?!?!?
Sto trafficando con dati del 2015... e vuoi vedere che il comando date sballa proprio quando è cambiata l'ora...
Mi confermate?
Sì, guarda che succede il 28 e il 29 marzo 2015 (passaggio ora legale):
Codice: Seleziona tutto
date '+%m/%d/%Y %H:%M' --date '03/28/2015 01:00 +1 hour'
03/28/2015 02:00
date '+%m/%d/%Y %H:%M' --date '03/29/2015 01:00 +1 hour'
03/29/2015 03:00
Se non vuoi scherzi, digli che le date sono in UTC e fattele dare in UTC.
Codice: Seleziona tutto
date -u '+%m/%d/%Y %H:%M' --date '03/29/2015 01:00 UTC + 1 hour'
03/29/2015 02:00
Emanuele
Re: Comando "date" per incrementare di un'ora. Ma sbaglia
Inviato: mar 15 mar 2016, 12:00
da joe
Rispondo solo ora, perchè poi ho ripiegato su altre soluzioni, simili, ma dapprima usando il python con il modulo datetime, poi sfruttando un modulo chiamato "libdate" in fortran, fa parte del pacchetto "Flibs".
Il problema di bash è che impiega un po' troppo, invece sia con python che in fortran ottengo tutto molto più rapidamente. Inoltre avendo anche altre operazioni da svolgere ho integrato questa procedura direttamente in un modulo fortran che richiamo in un altro programma.
Comunque restando in topic, il tuo suggerimento funziona: bisogna lavorare in UTC, altrimenti il localtime fà strani scherzi come si è visto.
Aggiungo che mi stupisce la velocità di esecuzione dello script python addirittura leggermente superiore al fortran. Potrebbe essere colpa del modulo libdate, magari più lento del corrispondente python "datetime".
Ok, direi che basta così...
Grazie di tutto