Newsgroup: it.comp.www.php
Titolo: Info funzione data e ora

Salve
Chiedo ancora un aiuto.
Ho creato e in parte copiato queste due funzioni che potrebbero servire
anche a qualcuno.
Il problema e' che il server dove e' ospitato il mio sito e' in America e
precisamente 9 ore indietro.
Cosa devo fare per  fargli calcolare l' ora giusta?
<?
//Funzione dataeora calcola la data e ora corrente
function dataeora()
{$mesi=array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio
","Agosto","Settembre","Ottobre","Novembre","Dicembre");
$giorni=array("Domenica","Lunedi","Martedi","Mercoledi","Giovedi","Venerdi",
"Sabato");
$adesso=time();
$arr=getdate();
printf("Sono le %02d:%02d",$arr["hours"],$arr["minutes"]);      /// IN
QUESTA LINEA DOVREI FARE LAMODIFICA
print ("$melbdate");
printf(" di  %s",$giorni[$arr["wday"]]);
printf(" ");
printf("%d %s %d", $arr["mday"],$mesi[$arr["mon"]-1],$arr["year"]);
}?>
<?
<?
//queata funziona calcola i saluti in base all'ora
function saluti()
{
$ora=getdate();
$adesso=$ora["hours"];
$saluto="Good Nighit da 
CLIKKACASTELLO.IT
";
if ($adesso >= 6) {$saluto="Buona Mattinata da ";}
if ($adesso >= 13) {$saluto="Buon Pomeriggio da ";}
if ($adesso >= 19) {$saluto="Buona Serata da ";}
if ($adesso >= 23) {$saluto="Good Nighit da ";}
printf("$saluto");
}
?>

 precisamente 9 ore indietro.
Prova con
<?
setlocale('LC_TIME', 'it_IT.ISO_8859-1');
define('DATE_TIME_FORMAT', '%A %d %B, %Y %H:%M:%S');
echo strftime(DATE_TIME_FORMAT);
?>
Stampa qualcosa del tipo:
Mercoledi 30 Gennaio, 2002 18:50:42
Questo vale se usi FreeBSD. Se usi RedHat prova con it_IT al posto di
it_IT.ISO_8859-1
Potrebbe non funzionare se il server č windowz.
--
Stefano Vita Finzi Zalman
Pronesis.it - PCA
stefan...@pronesis.it
--
Pronesis srl
Viale Cavour 50 - 44100 Ferrara
Tel 0532 242740 (2 linee)
Fax 0532 242491
email: 
in...@pronesis.it
web: 
http://www.pronesis.it

 ?>
io normalmente eseguo i calcoli e sottraggo (o aggiungo) le ore di 
differenza... ci sono controindicazioni o è valido, almeno per piccoli 
snippets?!?
g0m3z

Grazie

 putenv('TZ=Europe/Rome');
Dal manuale:
void putenv (string setting)
Adds setting to the server environment. The environment variable will only
exist for the duration of the current request. At the end of the request the
environment is restored to its original state.
Setting certain environment variables may be a potential security breach.
The safe_mode_allowed_env_vars directive contains a comma-delimited list of
prefixes. In Safe Mode, the user may only alter environment variables whose
names begin with the prefixes supplied by this directive. By default, users
will only be able to set environment variables that begin with PHP_ (e.g.
PHP_FOO=BAR). Note: if this directive is empty, PHP will let the user modify
ANY environment variable!
Meglio usare setlocale, anche perchè su alcuni server potresti non avere la
possibilità di modificare parametri di sistema.


Cosa devo fare per  fargli calcolare l' ora giusta?
[snip]
Io ho semplicemente risolto sommano il numero di ore:
(date("H")+8).":".date("i:s")
9 ore?! Ma dove sta, su un'isola del Pacifico?!
 ------------------------------------
 Il peccato di Caino
 La seduzione del male
 
www.vampiripavia.com
-------------------------------------
                *IcarusDream*
  -Dove un sogno è ancora libero-

 9 ore?! Ma dove sta, su un'isola del Pacifico?!
E' giusto...
Se il suo server ha le ore 0:00 allora cui sono le 9:00 (8:00), quindi +9
(+8)... questo corrisponde ad America...
;-)

snippets?!?
L'ho proposto pure io, ma ho verificato che se sono le 23 e aggiungi 8
perchè hai il server in america...saltano fuori le 35!!


 va in giro a
dire:
putenv('TZ=Europe/Rome');
setlocale('LC_TIME', 'it_IT');
$data = strftime('%H:%M:%S');
Ho provato cosě e mi da l'ora giusta...ma indietro di un'ora....
Sapete come aggiustarlo??
 ------------------------------------
 Il peccato di Caino
 La seduzione del male
 
www.vampiripavia.com
-------------------------------------
                *IcarusDream*
  -Dove un sogno č ancora libero-

perchè hai il server in america...saltano fuori le 35!!
Mi sembra piu' pratico prendere lo unixtime, aggiungere $HOURS*3600, e
poi riconvertirlo in d-m-Y.
	$HOURS= 8;
	$data = mktime('d-m-Y H:i:s', time()+$HOURS*3600);
Leonardo non provatocisi

	$data = mktime('d-m-Y H:i:s', time()+$HOURS*3600);
Ti correggo
echo strftime('%H:%M:%S',time()+8*3600);
Comunque, l'idea era giusta. Grazie.
