Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPMKTIME用于历元返回-3600,而不是0_Php_Epoch_Mktime - Fatal编程技术网

PHPMKTIME用于历元返回-3600,而不是0

PHPMKTIME用于历元返回-3600,而不是0,php,epoch,mktime,Php,Epoch,Mktime,如果我在PHP中运行以下命令: 回波时间(0,0,0,1,11970) 返回的值是-3600,而不是我预期的0 该服务器基于英国,目前是9月21日(即英国夏令时夏季)(尽管我不认为这会影响历元时间戳),并且根据php.info:“默认时区欧洲/伦敦” 设置夏令时标志,如下所示: 回波时间(0,0,0,1,11970,0);(即正确的DST标志,0为1月1日,而不是DST/BST) 返回-3600 回波时间(0,0,0,1,11970,1);(不正确的标志-将1 Jan设置为DST) 返回-720

如果我在PHP中运行以下命令:

回波时间(0,0,0,1,11970)

返回的值是-3600,而不是我预期的0

该服务器基于英国,目前是9月21日(即英国夏令时夏季)(尽管我不认为这会影响历元时间戳),并且根据php.info:“默认时区欧洲/伦敦”

设置夏令时标志,如下所示:

回波时间(0,0,0,1,11970,0);(即正确的DST标志,0为1月1日,而不是DST/BST) 返回-3600

回波时间(0,0,0,1,11970,1);(不正确的标志-将1 Jan设置为DST) 返回-7200

回波时间(0,0,0,1,11970,-1);(即未设置DST标志-由PHP决定) 返回-3600


有人知道为什么纪元会返回为-3600,而不是0吗?

当1970年1月1日英国夏令时间是午夜时,格林威治标准时间是离午夜还有一个小时。请尝试将时区设置为UTC:

date_default_timezone_set('UTC'); // or just change php.ini

英国夏季时间1970年1月1日是午夜,格林威治标准时间离午夜还有一个小时。请尝试将时区设置为UTC:

date_default_timezone_set('UTC'); // or just change php.ini
mktime()
基于当前时区。如果要基于GMT创建时间戳,必须使用
gmmktime()
函数

gmmktime(0,0,0,1,1,1970)


资源:

mktime()
基于您当前的时区。如果要基于GMT创建时间戳,必须使用
gmmktime()
函数

gmmktime(0,0,0,1,1,1970)


资源:


is_dst
参数从PHP 5.1开始就不推荐使用。的
is_dst
参数从PHP 5.1开始就不推荐使用。您好,太好了,谢谢。我认为很明显,1970年1月1日必须是GMT(即不是BST/DST-仅在3月底-10月底生效),因此unix时间戳为0-我没有意识到日期被解释为与脚本处于同一时区。我很高兴我正在用BST编写脚本,否则在三月份事情停止工作之前,这个错误都不会被注意到!。。。刚刚发现了这个:-英国夏令时在1969/1970年冬季作为一个trialHi正式生效,太好了,谢谢。我认为很明显,1970年1月1日必须是GMT(即不是BST/DST-仅在3月底-10月底生效),因此unix时间戳为0-我没有意识到日期被解释为与脚本处于同一时区。我很高兴我正在用BST编写脚本,否则在三月份事情停止工作之前,这个错误都不会被注意到!。。。刚刚发现了这一点:-BST在1969/1970年冬季作为一项试验生效