如何在尊重本地或远程TZ中可能发生的DST更改的同时将时区转换为用户的本地TZ?

时间:2012-12-07 20:04:36

标签: php timezone

我的任务是在当地的TZ中显示活动的日期。要表示的日期是将来的,它可能会在本地或事件TZ上的DST更改中运行。

我的老板说,将事件时间简单地转换为本地是不够的,因为星期五@ 8pm如果其中一个TZ的DST发生变化则不准确。

我几乎确信这对于我们需要输出信息的内容来说并不是一个先发制人,但他坚持认为他希望这样做。

有没有人有一个很好的来源和简单的方法来进行这些计算?请记住,这是针对网站上的日期,可能需要在大量网页上完成...

1 个答案:

答案 0 :(得分:0)

  1. 从用户收集本地时区。您可能希望让他们明确选择一个区域而不是猜测它们。有些区域使用非常非标准DST。
  2. 以UTC格式存储每个日期时间。最后一个。
  3. 确保您的数据库不了解时区,因此不会操纵日期时间字段,或者 了解时区,并明确将日期时间的存储设置为UTC。例如,MySQL具有可怕的时区支持,而PostgreSQL允许您使用日期时间本身定义时区。它很时髦。
  4. 使用PHP的DateTime类来表示日期时间,因为那样你就可以......
  5. 使用传递给DateTime的DateTimeZone方法的setTimezone,只需根据需要将UTC时间更改为当地时间。
  6. 向用户显示本地正确的DateTime。
  7. ???
  8. 利润!