Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    time() su servere estero

    Salve a tutti!

    ho un problema per la funzione time(), siccome uso un servere all'estero, ci sono problemi di fusorario.
    Ho fatto una funzione (time_italiano()) e, siccome non sono un genio, vorrei il vostro parere se ho dimenticato di considerare qualcosa, anche perchè al momento funziona bene ma non so cosa succederebbe al cambiamento di ora legale o se dovessi spostare lo script su un'altro server con fuso orario differente.

    codice:
    function time_italiano() 		
    {	 			
    $fusorario=date("Z"); //Z = indica la differenza dal meridiano di Greenwich in secondi. Per esmpio +43200 o - 43200. 			
    $gmt=3600; //aggiungo un'ora per GMT +1 			
    if(date("I"))$gmt=$gmt+$gmt;//se c'è l'ora legale aumento a GMT +2 
    $positivo=0; 			
    $negativo=0; 			
    if($fusorario<0)	$negativo=1; 			
    if($fusorario>0)	$positivo=1;
    $differenza=str_replace("+","",$fusorario);
    $differenza=str_replace("-","",$fusorario);
    			 			
    if($positivo)	{	$stamp=(time()-$differenza)+$gmt;	return $stamp;	}	 			
    if($negativo)	{	$stamp=(time()+$differenza)+$gmt;	return $stamp;	} 		}
    ringrazio in anticipo tutti

  2. #2

    gmmktime()

    Fidatevi del dottor Auz!
    http://dottorauz.blogspot.com

  3. #3
    ho fatto un paio di test con gmmktime


    codice:
    echo "(1)".date(" Y m d - H i s",gmmktime())."
    "."(2)".gmmktime()."#".time()."
    ";


    il risultato è identico a time()

    risultato:
    (1) 2010 12 21 - 06 16 54
    (2)1292937414#1292937414

  4. #4
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Prova il codice sotto e godi

    Codice PHP:
    echo strftime("%H:%M"time());
    date_default_timezone_set("Europe/Moscow");
    echo 
    "
    "
    .strftime("%H:%M"time()); 
    a me ha restituito
    codice:
    19:07
    21:07
    Per dettagli consulta la funzione date_default_timezone_set sul manuale in php.net

    Penso che ti basti utilizzare "Europe/Rome"

    Ciao
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  5. #5
    @grino come soluzione è perfetta!
    peccato solo che funziona per PHP 5 >= 5.1.0

    grazie

  6. #6
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Ma su che caffettiera ti poggi?
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Originariamente inviato da sweerty
    @grino come soluzione è perfetta!
    peccato solo che funziona per PHP 5 >= 5.1.0

    grazie
    Condivido il pensiero di Grino.
    Che non sia supportata la versione 5.3 ci può stare, che non sia supportata la 5.2 già non è accettabile, ma che addirittura non sia supportata neanche la 5.1 vuol dire che il server è praticamente stato abbandonato.

    Ti consiglio vivamente di migrare verso altri lidi e salutare quell'hoster.

  8. #8
    Lo script deve funzionare contemporaneamente su 2 server differenti con locazioni giografiche differenti:

    http://www.hosteasier.com/ PHP 4.4.7
    http://www.godaddy.com/ PHP 5.2.14


    al momento ho adottato una soluzione per entrambi in questo modo:
    function time_italiano()
    {
    if (strnatcmp(phpversion(),'5.1.0') >= 0)
    {
    date_default_timezone_set("Europe/Rome");
    return time();
    }
    else
    {
    $fusorario=date("Z"); //Z = indica la differenza dal meridiano di Greenwich in secondi. Per esmpio +43200 o - 43200.
    $gmt=3600; //aggiungo un'ora per GMT +1
    if(date("I"))$gmt=$gmt+$gmt;//se c'è l'ora legale aumento a GMT +2
    $positivo=0;
    $negativo=0;
    if($fusorario<0) $negativo=1;
    if($fusorario>0) $positivo=1;
    $differenza=str_replace("+","",$fusorario);
    $differenza=str_replace("-","",$fusorario);

    if($positivo) { $stamp=(time()-$differenza)+$gmt; return $stamp; }
    if($negativo) { $stamp=(time()+$differenza)+$gmt; return $stamp; }
    }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.