如果我在PHP中运行以下内容:
echo mktime(0,0,0,1,1,1970);
返回值为-3600,而不是我预期的值。
服务器是英国的,它目前是9月21日(即BST夏令时)(虽然我不希望这会影响纪元时间戳)和每个php.info:“默认时区欧洲/伦敦”。
如下设置夏令时标志,给出:
echo mktime(0,0,0,1,1,1970,0); (即正确的DST标志,0表示1月1日而不是DST / BST) 返回-3600
echo mktime(0,0,0,1,1,1970,1); (错误的标志 - 将1月1日设为DST) 返回-7200
echo mktime(0,0,0,1,1,1970,-1); (即未设置DST标志 - 由PHP决定) 返回-3600
有谁知道为什么这个纪元将被退回-3600而不是0,拜托?
答案 0 :(得分:5)
1970年1月1日午夜在英国夏令时,格林威治标准时间是午夜1小时。尝试将时区设置为UTC:
date_default_timezone_set('UTC'); // or just change php.ini
答案 1 :(得分:1)
mktime()
基于您当前的时区。如果要基于GMT创建时间戳,则必须使用gmmktime()
函数。
gmmktime(0,0,0,1,1,1970)
资源: