Formatting a date string to unix timestamp through strtotime() will result in a date that completely ingnores the set timezone. If you're pulling mysql dates from database then use the unix_timestamp() function within the query and you won't have any problems.
date_default_timezone_set
(PHP 5 >= 5.1.0)
date_default_timezone_set — Sets the default timezone used by all date/time functions in a script
Descripción
date_default_timezone_set() sets the default timezone used by all date/time functions.
Note: Since PHP 5.1.0 (when the date/time functions were rewritten), every call to a date/time function will generate a E_NOTICE if the timezone isn't valid, and/or a E_STRICT message if using the system settings or the TZ environment variable.
Instead of using this function to set the default timezone in your script, you can also use the INI setting date.timezone to set the default timezone.
Lista de parámetros
- timezone_identifier
-
The timezone identifier, like UTC or Europe/Lisbon. The list of valid identifiers is available in the List of Supported Timezones.
Valores retornados
This function returns FALSE if the timezone_identifier isn't valid, or TRUE otherwise.
Registro de cambios
| Versión | Descripción |
|---|---|
| 5.1.2 | The function started to validate the timezone_identifier parameter. |
date_default_timezone_set
07-Feb-2008 05:49
20-Jan-2008 10:01
<?php
/**
* @Author H22CREATIONS
* @Copyright 2008
*/
/***************************
* array get_time_byTZ([ integer $gmt_plus])
****************************/
function get_time_byTZ($gmt_plus=0){//must be in [-12..12]
//GET Difference between Server TZ and desired TZ
$sec_diff=date('Z')-($gmt_plus*3600);
//Return $gmt_plus as a string
if ($gmt_plus>=0) $gmt_plus='+'.$gmt_plus;
//Think about it!
$time=strtotime($sec_diff=(($sec_diff<=0)?'+':'-').abs($sec_diff).' seconds');
return array($time,$gmt_plus,$sec_diff/3600);
}
//Test
list($time,$gmt_plus,$tz_diffrence)=get_time_byTZ(-1);
echo date('m/d/y G:i:s ',$time).$gmt_plus;
?>
12-Aug-2007 10:37
@davidn at datalinktech dot com dot au
set_default_timezone() has no effect at all on how apache logs are timestamped (at least for me)
It is however true, that all dates and times that php formats that are _not_ timestamps will be in that timezone.
Timestamps are always GMT
10-Jun-2007 03:34
http://drakecms.sf.net/index.php?option=content&id=32&Itemid=10
A short tutorial which explains how to consistently implement timezones with PHP4 while remaining forward compatible with PHP5.
12-Feb-2007 01:21
The problem:
date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Los_Angeles' for 'PST/-8.0/no DST' instead
Of course this is a problem that recently surfaced since PHP5. Quick fix is to set your time zone, add this line to your php code:
date_default_timezone_set("America/Los_Angeles");
22-Dec-2006 02:27
Note that there may be some unexpected side-effects that result from using either set_default_timezone() or the putenv("TZ=...") workalike for earlier PHP versions. ANY date formatted and output either by PHP or its apache host process will be unconditionally expressed in that timezone.
This does indeed include the web server's logs and other output files and reports which by default usually do not include any indication of timezone. This has a further side-effect on log processing and analysis, obviously.
23-Nov-2006 07:14
See the user contributed notes for the putenv function for a workaround for previous versions of PHP.
