我正在尝试使用我的默认时区*(America / Sao_Paulo)*制作我自己的php mktime();
。
它工作正常,但我注意到有些时间戳比它应该多一个小时。
所以我找到了这个脚本开始错过的日期:03 / November / 1985
我进行了一些测试并出于一些奇怪的原因(这就是我想要了解的),这一天只有23个小时!
检查一下:
<?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:对不起英文错误。
答案 0 :(得分:3)
听起来像是一天的节约时间问题。可能只有23个小时,因为DST推动时钟前进,跳过1小时。
mktime有一个名为is_dst
的额外参数。尝试将其设置为0或1并查看是否可以解决您的问题,尽管您获得的输出可能非常正确。
答案 1 :(得分:3)
您恰好选择了代表1985年巴西夏令时开始的日期。请参阅http://tldp.org/HOWTO/TimePrecision-HOWTO/tz.html。
所以,由于特定日期的时间变化,两天午夜之间的差异只有23个小时。