ciao hai pienamente raggione scusa :
ho fatto cosi perche con date('Z') stabilisco il defoult del server , come ho detto precedentemente il mio e a 7200 quindi un ora avanti ! sinceramente non riesco a capire dove prende questo 7200 visto che windows l ho con il fuso orario italiano +1 comunque


una volta che capisco dove si trova ilfuso orario del server lo faccio partire con il fuso orario di default inoltre nel database viene salvato un dato che potrebbe essere -3600 o 3600
con la funzione substr vedo se c e ----- e ordino di fare un determinato calcolo altrimenti un altro ! comunque sinceramente non sono tanto convinto
Codice PHP:

    
function GeteDateTime$dateformat )
{
        global 
$settings,$RCW ;
       
$usertimezone   $RCW['user']['usertimezone'];
    
$servertimezone $settings['timezone'];
    
$localtimezone  iff$RCW['user']['usertimezone'], $RCW['user']['usertimezone'],$settings['timezone']  );
    
$timeline time();
    
    if ( 
date"I"$timeline ) == )
    {
        
$data_Z  date("Z");
     
 switch (
trim($data_Z)){
case 
'-43200'
break;
case 
'-39600'
break; 
case 
'-36000'
break;
case 
'-32400'
break;
case 
'-28800'
break;
case 
'-25200'
break;
case 
'-21600'
break;
case 
'-18000'
break;
case 
'-14400'
break;
case 
'-12600'
break;
case 
'-10800'
break;
case 
'-7200' 
break;
case 
'-3600' 
break;
case     
'0' :
break;
case  
'3600' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -=     ;else  $localtimezone  -= 3600 ; break;
case  
'7200' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -=  3600 ;else  $localtimezone  -= 7200 ;  break;
case 
'10800' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -=  7200 ;else  $localtimezone  -= 10800  ;  break;
case 
'12600' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 10800 ;else  $localtimezone  -= 12600  ;  break;
case 
'14400' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 12600 ;else  $localtimezone  -= 14400  ;  break;
case 
'16200' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 14400 ;else  $localtimezone  -= 16200  ;  break;
case 
'18000' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 16200 ;else  $localtimezone  -= 18000  ;  break;
case 
'19800' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 18000 ;else  $localtimezone  -= 19800  ;  break;
case 
'20700' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 19800 ;else  $localtimezone  -= 20700  ;  break;
case 
'21600' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 20700 ;else  $localtimezone  -= 21600  ;  break;
case 
'23400' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 21600 ;else  $localtimezone  -= 23400  ;  break;
case 
'25200' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 23400 ;else  $localtimezone  -= 25200  ;  break;
case 
'28800' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 25200 ;else  $localtimezone  -= 28800  ;  break;
case 
'32400' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 28800 ;else  $localtimezone  -= 32400  ;  break;
case 
'34200' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 32400 ;else  $localtimezone  -= 34200  ;  break;
case 
'36000' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 34200 ;else  $localtimezone  -= 36000  ;  break;
case 
'39600' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 36000 ;else  $localtimezone  -= 39600  ;  break;
case 
'43200' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 39600 ;else  $localtimezone  -= 43200  ;  break;
case 
'46800' :if( substr(trim($localtimezone)  , 0,1)  == '-' )$localtimezone  -= 79200 ;else  $localtimezone  -= 46800  ;  break;
}
    
$timeline += $localtimezone 
     return 
date($dateformat$timeline ) ; 
}
     return 
date($dateformat$timeline  );