Re: Timezone date/time conversion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm sure something like this has already been written and I'd
hate to redesign the wheel.  I've searched google but came up
empty and am wondering if any of you guys have what I am
looking for.

I ended up writing my own.  Hopefully to help anyone else out
trying to do the same thing, I've included my function below.
I used the following page as a guide

http://www.timeanddate.com/library/abbreviations/timezones/

function calculateTimeZoneDate( $dateTime, $fromTZ, $toTZ, $fromLocation = 'North America', $toLocation = 'GMT' ) {

 $retval     = $dateTime;
 $timeStamp  = strtotime( $dateTime );

 $timeZonesArray = array( 'GMT' => array( 'GMT' => +0 // GMT
                                                     ),
'North America' => array( 'NST' => -3.5, // Newfoundland Standard Time 'NDT' => -2.5, // Newfoundland Daylight Time 'AST' => -4, // Atlantic Standard Time 'ADT' => -3, // Atlantic Daylight Time 'EST' => -5, // Eastern Standard Time 'EDT' => -4, // Eastern Daylight Time 'CST' => -6, // Central Standard Time 'CDT' => -5, // Central Daylight Time 'MST' => -7, // Central Daylight Time 'MDT' => -6, // Mountain Daylight Time 'PST' => -8, // Pacific Standard Time 'PDT' => -7, // Pacific Daylight Time 'AKST' => -9, // Alaska Standard Time 'AKDT' => -8, // Alaska Daylight Time 'HAST' => -10, // Hawaii-Aleutian Standard Time 'HADT' => -9 // Hawaii-Aleutian Daylight Time
                                                     ),
'Australia' => array( 'NFT' => +11.5, // Norfolk (Island) Time 'EST' => +10, // Eastern Standard Time 'EDT' => +11, // Eastern Daylight Time 'CST' => +9.5, // Central Standard Time 'CDT' => +10.5, // Central Daylight Time 'WST' => +8, // Western Standard Time 'CXT' => +7, // Christmas Island Time
                                                     ),
'Europe' => array( 'GMT' => +0, // Greenwich Mean Time 'BST' => +1, // British Summer Time 'IST' => +1, // Irish Summer Time 'WET' => +0, // Western European Time 'WEST' => +1, // Western European Summer Time 'CET' => +1, // Central European Time 'CEST' => +2, // Central European Summer Time 'EET' => +2, // Eastern European Time 'EEST' => +3 // Eastern European Summer Time
                                                     ),
'Military' => array( 'Z' => +0, // Zulu Time Zone 'Y' => -12, // Yankee Time Zone 'X' => -11, // X-ray Time Zone 'W' => -10, // Whiskey Time Zone 'V' => -9, // Victor Time Zone 'U' => -8, // Uniform Time Zone 'T' => -7, // Tango Time Zone 'S' => -6, // Sierra Time Zone 'R' => -5, // Romeo Time Zone 'Q' => -4, // Quebec Time Zone 'P' => -3, // Papa Time Zone 'O' => -2, // Oscar Time Zone 'N' => -1, // November Time Zone 'A' => +1, // Alpha Time Zone 'B' => +2, // Bravo Time Zone 'C' => +3, // Charlie Time Zone 'D' => +4, // Delta Time Zone 'E' => +5, // Echo Time Zone 'F' => +6, // Foxtrot Time Zone 'G' => +7, // Golf Time Zone 'H' => +8, // Hotel Time Zone 'I' => +9, // India Time Zone 'K' => +10, // Kilo Time Zone 'L' => +11, // Lima Time Zone 'M' => +12 // Mike Time Zone
                                                     ));

 $fromGMTDiff  = $timeZonesArray[$fromLocation][$fromTZ];
 $toGMTDiff    = $timeZonesArray[$toLocation][$toTZ];

 if(( '' != trim( $fromGMTDiff )) && ( '' != trim( $toGMTDiff ))) {
   if( $fromGMTDiff > $toGMTDiff ) {
     $netDiff = $fromGMTDiff - $toGMTDiff;

   } else {
     $netDiff = $toGMTDiff - $fromGMTDiff;

   }
   $retval = date( 'Y-m-d h:i:sa', ( $timeStamp + ( 3600 * $netDiff )));

 }
 return $retval;

} // end function calculateTimeZoneDate()

As for daylight savings time, I'm leaving it up to the developer using the
above function to determing the appropriate TZ based on DST to pass
in.  I didn't want to have to worry about what timezones actually use
DST.  If anyone sees any gross mistakes, please let me know.  Other-
wise, please feel free to use if needed.

thnx,
Chris

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux