Newsgroup: it.comp.lang.perl
Titolo: Ho recuperato la data, però americana!

Scusate,
ho messo in pratica il suggerimento che avevo raccolto su questo newsgroup tempo
addiettro.
Avevo chiesto come ottenere la data.
Fantastico.
Il problema però è che il server è negli USA, e la data è indietro rispetto a
quella italiana (stamattina 30/11 fino alle 8/9 segnava ancora 29/11!!!). Come
posso 'localizzarla' col GMT giusto?
Il codice che uso ora è questo:
  use Time::localtime;
  $tm = localtime;
  $ggmmaaaa=sprintf "%02d%02d%04d\n",
         $tm->mday,
         ($tm->mon)+1,
         ($tm->year)+1900;
--
Umberto Meroni
[
http://www.ubi1k.com
] [
http://www.ubi1k-vb.net
]
[
webm...@ubi1k.com
] [ICQ: 14660006]
[MSN Messenger: 
ub...@hotmail.com
]
[per contattarmi: 
http://www.ubi1k.com/meroni
]

 wrote:
:)Il problema però è che il server è negli USA, e la data è indietro rispetto a
:)quella italiana (stamattina 30/11 fino alle 8/9 segnava ancora 29/11!!!). Come
:)posso 'localizzarla' col GMT giusto?
quanti secondi di differenza ci sono fra la data locale degli states e
quella italiana?
Oha

 posso 'localizzarla' col GMT giusto?
gmtime() oppure Time::gmtime()
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

Utilizzando Time::gmtime() non devo passare anche un numero (non dovrebbe essere
+1?)?


 +1?)?
Che dice la pagina di manuale?
gmtime e localtime, al limite, prendono come argomento un tempo (riferito
all'epoch, risultato di time() o di qualche comando tipo -a -m o -c)
Tu vuoi sapere che ore sono QUI. O sai qual'e la differenza oraria tra qui e
li' e ce la sommi, oppure ti fai dare il tempo in GMT e a questo punto sai
che e' un'ora indietro.
Se cerchi qualcosa in piu', puoi sempre guardare su CPAN.


On 1 Dec 1999 14:26:47 GMT, 
mmmu...@netscape.net
 (Maurizio M.
Munafo`) wrote:
:)Tu vuoi sapere che ore sono QUI. O sai qual'e la differenza oraria tra qui e
:)li' e ce la sommi, oppure ti fai dare il tempo in GMT e a questo punto sai
:)che e' un'ora indietro.
ma con la GMT non bisogna tenere conto anche dell'ora legale?
Oha

La cosa si sta facendo un tantino complicata!!
Io non voglio recuperare un'ora, ma una data, attenzione.


 Io non voglio recuperare un'ora, ma una data, attenzione.
Quali sono  le probabilita' che tu voglia fare quel controllo tra mezzanotte
e l'una? Solo perche', in genere, e' il solo momento in cui la data GMT e la
data italiana sono differenti. Se imponi questo vincolo nel tuo test (magari
abbondando per evitare problemi di ora legale) il problema e' risolto!


 wrote in message
823qkf$6qe$1...@menelao.polito.it...

 mattino!
A prescindere da quello, mi sembra di averti offerto la soluzione che
cercavi: usi gmtime e correggi dal data controllando l'ora.
Tra l'altro, personamente ritengo il formato YYYYMMGG piu' adeguato di
GGMMYYYY per chiamare dei file. Il motivo mi sembra chiaro.


 GGMMYYYY per chiamare dei file. Il motivo mi sembra chiaro.
L'unico motivo che mi viene in mente č l'ordine dei file (chiamandoli AAAAMMGG
sono in ordine crescente..?), o sono io stupido e non ho capito a cosa ti
riferivi?

 riferivi?
Esattamente a questo. Non ritieni che avere i file gia' ordinati per
data nella directory sia comodo, o preferisci usare esotiche opzioni per
scoprire qual'e' l'ultimo file che hai creato?
Riepilogo: scopri il formato della timezone da usare e prova ad alterare il
 valore della timezone cambiando il valore di $ENV{TZ}.


  valore della timezone cambiando il valore di $ENV{TZ}.
Come?

 Come?
Assegnandoci il valore opportuno? $ENV{TZ} e' una variabile che, forse,
esiste sul tuo sistema remoto. Se esiste e ha un valore, puoi pensare di
assegnarci il tuo. O meglio, %ENV e' un hash che contiene l'environment del
programma e che puo' essere modificato assegnando i valori opportuni alle
key opportune, ad uso di eventuali processi 'child'.
Siccome non conosco il formato che tu dovresti usare, non posso scriverti
l'istruzione.


 
Fai così:
Dalla shell prova questo:
 TZ=MED perl -e 'print scalar localtime() '
Se ti stampa la l'ora e la data italiana corrente, sei a posto.
Ora è sufficiente che aggiungi 
	$ENV{TZ}="MET";
in tutti i tuoi script.
Max

 key opportune, ad uso di eventuali processi 'child'.
Ci provo...
Grazie,
UBi1k

 
Ehm... volevo dire "MET" :-)
MM

 wrote in message
Pine.LNX.4.10.99120...@c64.comm2000.it...