【发布时间】:2011-06-03 17:22:41
【问题描述】:
如何在 PHP 脚本中获取当前 Windows 时间?
使用time() 似乎不起作用,因为它可以识别时区并忽略服务器上是否实际打开了 DST。例如,如果时区设置为“America/Los_Angeles”但未选中 DST(Windows 机器),如果今天的日期是 9 月 1 日,则 Windows 时间可以是下午 1 点,但 PHP time() 将返回下午 2 点。
如何获取服务器的 Windows 时间? (使用 PHP 5.2.14)。
重现问题
- 将时区设置为“America/Los_Angeles”并取消选中“夏令时”复选框。将日期设置为 2010 年 9 月 1 日下午 16:00:00。
- 使用以下内容创建一个简单的 PHP 脚本,然后运行它
echo date_default_timezone_get(), date("H:i:s", time());
输出是 America/Los_Angeles 17:00:00。请注意 DST 造成的 1 小时差异。
【问题讨论】:
-
time()返回时区中性的 UNIX 时间戳。你如何确定它关闭了一小时? -
date_default_timezone_get()说什么?你能显示一些代码吗?您如何确定time()已关闭? -
date("r")应该已经根据系统设置和时区为您提供本地时间,而gmdate("r")是 GMT 版本。否则可能是php.iniissue。 -
@deceze、@Pekka、@mario:查看我的编辑。
-
@JRL 我认为问题在于 PHP 根本不听您本地的 DST 设置。它使用嵌入在时区信息中的官方 DST 信息,说明是否有 DST 以及在什么时间段。虽然不知道该怎么做