如何计算大型应用程序的时区偏移量?

时间:2013-03-21 15:33:16

标签: php mysql timezone utc

在处理大型应用程序时,我正在尝试使日期时间标记与当前用户时间一致。所以如果活动ID在下午3:00完成,那么每个用户都会在下午3:00看到它

所以这是问题的解决方案步骤。如果我没有朝着正确的方向前进,请纠正我或引导我走向正确的方向。

  1. 将所有日期时间存储在MySql中作为UTC时间。

  2. 将时区存储在具有当前偏移量的表中。例如

    zone_id  zone_name  utc-offset
    1        Central    -6
    
  3. 在我的users表中,我有一个user_time_zone_id字段,在该字段中,我将在用户设置中显示值“1”,因此它会说该用户正在使用“Central”位置的系统。 / p>

  4. 在我的php应用程序配置中,我将默认时区设置为UTC

    date_default_timezone_set('UTC');
    
  5. 加载此应用程序后,我定义了用户偏移量,并在每个日期时间输出我执行时间计算。例如date('Y-m-d', strtotime($current_offset.' hour')) where $current_offset = -6,因为它是在页面加载时由用户配置文件定义的。

  6. 以下是我的问题。

    我对此问题的处理方法是否正确? 有没有更好的方法呢? 如何计算夏令时?请记住,该国的某些地方没有夏令时。

2 个答案:

答案 0 :(得分:1)

我曾经有过一次类似的事情,最后是试图跟踪用户时区和夏令时的痛苦,特别是当你的一半客户在AZ没有夏令时。我不知道这对你是否可行,但我最终做的只是将所有内容存储在UTC中,然后使用JS将其转换为用户本地时间Date对象。它是通过ajax调用完成的,但如果需要,您还可以echo document.write

答案 1 :(得分:0)

您不需要使用date_default_timezone_set,请使用对时区具有原生支持的PHP DateTime class。或者,就像@romo说的那样,你可以用JavaScript在客户端上做到这一点。