Php 如何将时区转换为用户';本地TZ,同时考虑本地或远程TZ中可能发生的DST变化?

Php 如何将时区转换为用户';本地TZ,同时考虑本地或远程TZ中可能发生的DST变化?,php,timezone,Php,Timezone,我的任务是在当地TZ上显示一个活动的日期。要表示的日期是在将来,它可能会在本地或事件TZ上运行DST更改 我的老板说,简单地将活动时间转换为本地时间是不够的,因为如果其中一个TZ的DST发生变化,周五晚上8点是不准确的 我几乎确信这不是我们需要输出信息的初衷,但他坚持认为他希望这样做 有没有人有一个好的来源和简单的方法来做这些计算?请记住,这是一个网站上的日期,可能这将需要在大量的网页上完成 从用户处收集本地时区。您可能希望让他们明确地选择一个区域,而不是为他们猜测。有些地区的DST使用非常不标

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

我的老板说,简单地将活动时间转换为本地时间是不够的,因为如果其中一个TZ的DST发生变化,周五晚上8点是不准确的

我几乎确信这不是我们需要输出信息的初衷,但他坚持认为他希望这样做

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

  • 从用户处收集本地时区。您可能希望让他们明确地选择一个区域,而不是为他们猜测。有些地区的DST使用非常不标准
  • 以UTC格式存储每个日期时间。他们中的每一个人
  • 确保您的数据库不了解时区,因此不操作日期时间字段,或者它确实了解时区,并且您明确地将日期时间的存储设置为UTC。例如,MySQL具有可怕的时区支持,而PostgreSQL允许您使用datetime本身定义时区。很时髦
  • 使用PHP的类来表示日期时间,因为这样您就可以
  • 使用传递给日期时间的方法,只需根据需要将UTC时间更改为本地时间
  • 向用户显示本地正确的日期时间
  • 利润
    阅读此处:DateTime是否考虑了两个位置(本地和事件所在地…)之间的DST更改?我认为必须事先确定是否存在偏移量,只要PHP使用的时区数据库是最新的,那么是的。如果您使用的是Linux,并且使用的是OS原生PHP,那么您可能还可以。如果您不在Linux上,或者您使用的是操作系统未附带的PHP版本,则您的时区数据库可能已过时。它越老,就越有可能在美国有不正确的过渡日期。您可以通过调用来手动检查这些。