2011-06-25 29 views
2

我正在尝试使用我的默认时区*(America/Sao_Paulo)*制作自己的php mktime();。 它工作正常,但我注意到一些时间戳比它应该多一个小时。 所以我追查下来,找出脚本开始错过的日期:03/November/1985 我跑了一些测试和一些奇怪的原因(这就是我想了解的),这一天只有23小时! 请检查:为什么PHP时间戳的行为如此? 03/November/1985

<?php 

date_default_timezone_set('America/Sao_Paulo'); 

//shows 23 
echo (mktime(0,0,0,11,03,1985)- mktime(0,0,0,11,02,1985))/3600; 

//any other date, shows 24 
echo '<br/>'.(mktime(0,0,0,11,3,2000)-mktime(0,0,0,11,2,2000))/3600; 

?> 

请注意,它不会与时区UTC发生。 这是一个可能的错误? PS:对不起英文错误。

回答

3

听起来像日光节省时间问题。可能只有23个小时,因为夏令时推动时钟,跳过1小时。

mktime还有一个额外的参数叫做is_dst。尝试将其设置为0或1,看看是否可以解决您的问题,尽管您得到的输出可能非常正确。

+0

谢谢你,马克。 – Ravan

+0

注意'is_dst'参数已在PHP 7中删除。 – felipsmartins

相关问题