gpt4 book ai didi

javascript - 使用 TimezoneOffset 计算用户的时间

转载 作者:行者123 更新时间:2023-11-29 18:37:51 31 4
gpt4 key购买 nike

我正在尝试将用户的本地时间存储到我的数据库中。我不能使用 PHP 函数 now(),因为它会返回服务器的时间。

我通过使用 JavaScript 获得了 TimezoneOffset:

d = new Date();
alert(d.getTimezoneOffset()/60);

如何使用它来计算时间?我应该为 MySQL 数据类型使用什么类型?

谢谢

最佳答案

我不得不建议以 UTC 格式存储所有时间,然后还存储用户的时区偏移量。这允许最大的灵 active ,以及​​实际数据(UTC 时间)和显示逻辑(UTC +/- 偏移量)之间的适当分离。

对于存储,无论我尝试 RDBMS 特定时间字段多少次,int 字段中的 unix 时间戳始终提供最佳的灵 active 和可移植性。

您可以以秒为单位存储用户的时区偏移量,从而使该过程更加简单。所以 EST (-5) 将变为 -18 000

然后,为了显示时间 -/+ 用户的偏移量,简单的二次数学就可以正常工作:

$now = time();
$userTime = $now + $user->getTimezoneOffset();

这会很好用,因为加一个负数就像减去一个正数。

编辑:

您将能够使用 PHP 的标准 gmdate() 函数格式化用户的时间戳。只需将计算出的时间戳作为函数的第二个参数传递即可。参见 http://ca2.php.net/manual/en/function.gmdate.php

糟糕... date() 是当前语言环境感知的。应该改用 gmdate()。

当然,有一种完全不同的方法可能更好:存储与 PHP 的 date_default_timezone_set() 兼容的用户时区的文本表示。然后,对于每个请求,如果您有经过身份验证的用户,您可以设置时区,所有日期函数都会遵守它。

关于javascript - 使用 TimezoneOffset 计算用户的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962214/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com