如何在PHP脚本中获取当前的Windows时间?
使用time()
似乎不起作用,因为它是时区感知的,并忽略服务器上是否实际打开了DST。例如,如果时区设置为“America / Los_Angeles”但未取消选中DST(Windows机器),如果今天的日期是9月1日,则Windows时间可以是下午1点,但PHP time()
将返回下午2点
如何获取服务器的Windows时间? (使用PHP 5.2.14)。
重现问题
echo date_default_timezone_get(), date("H:i:s", time());
输出为America / Los_Angeles 17:00:00。请注意由于夏令时造成的1小时差异。
答案 0 :(得分:2)
date("Z")
以秒为单位为您提供gmt的签名本地偏移量。然后,您可以将其添加到日期输出中。请参阅date function
如果你不相信这些设置,你也可以使用shell_exec执行date命令并解析输出
答案 1 :(得分:2)
我认为PHP不考虑Windows DST设置。时区根据定义的标准进行解释。也是根据上次出现的结果:Daylight savings time not correct even after setting timezone
但请参阅http://php.net/manual/en/function.date-default-timezone-set.php
有一些示例代码使用WShell在Win注册表中查询实际值,包括DST标志。然后使用timezone_abbreviations_list()
,你可以找到一个具有正确时区名称和DST标志的别名,设置它。
另外@Pekka在这里有另一个手动解决方法:php date() one hour ahead of server time (DST problem)(他只是不告诉所有人。)