0

我使用日期来获取日期,但是...

离我的电脑时间还有 3 小时。

date('g:i A')

我相信是给 EST 时间,因为我是 PST 并且有 3 个小时的休息时间。

有没有办法让它自动放置正确的时区?

4

3 回答 3

1

您可以在配置文件 ( php.ini) 中或在运行时配置时区。PHP 是服务器端应用程序,因此它不能“自动”从客户端获取时区。

文档

如果您正在处理数据,则应使用 UTC 日期/时间并适当地偏移时间。

于 2013-09-16T00:28:23.437 回答
1

要简单地从服务器获取时间 3 小时,您可以说:

date ('g:i A', time () + 60*60*3);

或者

date ('g:i A', time () - 60*60*3);

据我所知,没有一种“完美”的方式来获取用户所在的时区,但过去我使用 javascript 来找出用户当前的计算机时间并将其与服务器的时间进行比较。Javascript 是我所知道的获取与某人当前时间或时区相关的任何信息的唯一方法。

于 2013-09-16T00:41:11.067 回答
1

强大的解决方案是使用DateTimewithDateTimeZone而不是date

<?php

$date = new \DateTime(null, new \DateTimezone('PST'));
// or even better: 
$date = new \DateTime(null, new \DateTimezone('America/Los_Angeles'));

$formatted = $date->format('g:i A');

请注意,仅使用通用时区(例如“PST”)可能仍然不明确。该时区中的某些位置可能正在遵守 DST,而有些则可能没有。因此,唯一可靠的做法是尽可能具体地指定位置。

于 2013-09-16T01:49:52.163 回答