在处理大型应用程序时,我试图使日期时间戳与当前用户时间一致。如果activity id在下午3点完成那么每个用户都会在下午3点看到它
所以这是解决问题的步骤。如果我不在正确的方向上,请纠正我或引导我到正确的方向。
-
用当前偏移量在表中存储时区。例如
zone_id zone_name utc-offset 1 Central -6
-
在我的用户表中,我有一个字段为user_time_zone_id,在该字段中,我将在用户设置中设置值"1",因此它将表示该用户正在使用来自"Central"位置的系统。
-
在我的php应用程序配置中,我将默认时区设置为UTC,如下所示
date_default_timezone_set('UTC');
-
加载此应用程序后,我定义用户偏移量,并在每次datetime输出时计算时间。例如
date('Y-m-d', strtotime($current_offset.' hour')) where $current_offset = -6
,因为它是在页面加载时由用户配置文件定义的。
这是我的问题。
我解决这个问题的方法正确吗?有更好的方法吗?如何计算夏令时?请注意,我国部分地区没有夏令时。
我曾经有过类似的事情,并且它最终成为一种痛苦,试图跟踪用户的时区和夏令时,特别是当你的一半客户在没有夏令时的AZ。我不知道这对你来说是否可能,但我最终做的只是将所有内容存储在UTC中,然后使用JS将其转换为使用Date
对象的用户本地时间。这是通过ajax调用完成的,但如果需要,也可以使用echo
和document.write
。
你不需要使用date_default_timezone_set
,使用PHP的DateTime
类,它具有本地时区支持。或者,就像@romo说的,你也可以在客户端用JavaScript完成。