strtotime在将一个潜在的时间字符串转换为正确的时间时,会使用到当前系统时区。如果系统时区与所给目标字符串所示时区不一样时,那么在调用后,其生成的时间将与想象中的时间有时间偏差。因此,需要在调用该方法前,首先确定当前系统时区。
在需要设置时区的地方调用date_default_timezone_set()方法来设置时区。
<? $str = 'Sat May 14 22:35:44 +0800 2011'; $current_timezone = date_default_timezone_get(); $strTtime = strtotime($str); ?> <table border = '1'> <caption>未设定时区前</caption> <tr> <td>时间字符串</td> <td><?=$str?></td> </tr> <tr> <td>当前时区</td> <td><?=$current_timezone?></td> </tr> <tr> <td>字符转化后日期格式('r')</td> <td><?=date('r',$strTtime)?></td> </tr> <tr> <td>字符转化后日期格式('H:i:s')</td> <td><?=date('H:i:s',$strTtime)?></td> </tr> </table> <br/></br> <?
//设置时区 date_default_timezone_set('Asia/Shanghai'); $l_current_timezone = date_default_timezone_get(); $l_strTtime = strtotime($str); ?> <table border = '1'> <caption>设定时区后</caption> <tr> <td>时间字符串</td> <td><?=$str?></td> </tr> <tr> <td>当前时区</td> <td><?=$l_current_timezone?></td> </tr> <tr> <td>字符转化后日期格式('r')</td> <td><?=date('r',$l_strTtime)?></td> </tr> <tr> <td>字符转化后日期格式('H:i:s')</td> <td><?=date('H:i:s',$l_strTtime)?></td> </tr> </table> <? //使用完成后,还原到系统默认的设置 date_default_timezone_set($current_timezone);
?>