如何处理时区

时间:2014-05-07 07:07:52

标签: php datetime time timezone

我知道这个问题已被提出。但我不清楚如何处理这个问题。我已经阅读了一些关于如何处理它的文章。我的问题是我有一个网站处理会议/日程安排,但网站的用户可能来自其他国家,这是我的大问题,因为他们有不同的时区。

情况如下。

我明天创建了一个会议,并将时间设置为下午3:00(考虑到我在新加坡)。我的客户将在法国,因此他将在网站上看到的时间应该是上午9点。

我怎么能想出这个?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

以下是我的意思。

  1. 您在php脚本中设置的默认时区,无论您决定它是什么。

  2. 然后,为了显示您的用户,您可以确定用户的时区。您可以使用javascript执行此操作,因为您需要来自客户端的信息。一些可能的解决方案:

  3. 纯粹的javascript https://stackoverflow.com/a/1091399/525445

    的jQuery https://stackoverflow.com/a/5607444/525445

    (甚至 - 结合这两种方法 - 使用纯javascript获取时区,然后将该值存储在会话变量中,就像在jquery示例中一样)。

    3。 现在您的PHP脚本知道您的用户的时区,您可以使用它来将您的默认时区转换为他们拥有的时间,使用它:

    https://stackoverflow.com/a/2505687/525445

答案 1 :(得分:1)

PHP包含DateTime object,可用于跨时区转换。

我建议在同一时区将所有时间戳存储在数据库中(或者如果不可能,则将时区与时间戳一起保存)。当您需要显示时间戳时,请从数据库中提取时间戳,然后将其转换为用户的本地时区。

$date = new DateTime('2000-01-01', new DateTimeZone('UTC'));
echo $date->format('Y-m-d H:i:s'); // save this one to your database
// Output: 2000-01-01 00:00:00


$date->setTimezone(new DateTimeZone('Australia/Adelaide'));
echo $date->format('Y-m-d H:i:s'); // Serve this one to the user
// Output: 2000-01-01 09:30:00

以下是PHP支持的full list of timezones

答案 2 :(得分:0)

试试这个.. date_default_timezone_set("亚/加尔各答&#34); $ date = date(" Y-m-d H:i:s");

由于