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:

Codice: Seleziona tutto

04/29/2015 02:00
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