【发布时间】:2015-05-07 15:13:25
【问题描述】:
在 PHP 我使用date_default_timezone_set 来设置默认时区。
然后,每当我使用 date('m/d/y g:i A') 时,它都会为我提供该时区的正确时间,而不管客户的位置如何。
但是,当页面加载时,我需要能够设置 用户定义的默认时区偏移量,以分钟为单位。所以它可以是从 -99999 到 0 到 99999 的任何值。
我不知道如何将偏移量与默认时区设置相结合。
我已经看到了大量关于如何使用 UTC 和 GMT 偏移量的信息,但没有关于自定义默认时区偏移量(以分钟或秒为单位)的信息。
我希望有人对此有一些经验,可以为我指明正确的方向。
如果不定义自定义日期包装器并每次都获取和分配偏移量,使用 PHP 显然这是不可能的。
除了我之外还有其他人认为这应该包含在 PHP 中吗..
date_default_timezone_set($timezone, $optionalCustomOffset);
我要提交一个 RFC
非常感谢任何帮助。
谢谢
宠物0
【问题讨论】:
-
您的用户将如何定义/设置时区?他们什么时候登录?数据库中的配置?以某种方式检测浏览器设置?您可以使用php.net/manual/en/function.date-default-timezone-set.php date_default_timezone_set() 动态更改时区设置。该链接将链接到您可以使用的可接受时区字符串列表。
-
我已经阅读了该页面。时区存储在一个文件中,可以通过 PHP 或 JS(通过 ajax)轻松检索。有没有办法使用 date_default_timezone_set 设置不是以小时为单位的时区默认偏移量,而不是 GMT 或 UTC 偏移量?如果有请发布答案,因为我无法弄清楚。
-
我认为除了以小时为单位之外没有其他方法可以设置时区(或偶尔的官方时区 30 分钟)。如果您想以非标准方式以分钟为单位计算新的日期偏移量,您可能必须将您的时间转换为 unix 时间戳(自纪元以来的秒数),并在生成日期字符串以供输出之前始终添加/减去偏移量。如果这是您想要的,请告诉我,我会提供更多详细信息。
-
我看到了一个看起来可以使用 DateTime 的解决方案,但是将其完全重新编码到站点中需要很长时间。所以我现在只是创建一个函数来包装 PHP 日期函数并添加偏移量。如果有人对此提供了答案,我仍然会将其标记为正确。
-
@fbas 你能改进我在下面作为答案发布的日期函数包装器吗?
标签: php date timezone offset overriding