0

在我的数据库中,我使用 NOW() 存储用户上次登录日期/时间。我意识到这家商店使用我的服务器时区,我对此没有任何问题。虽然我计划将其用于我自己的目的(他们说他们从未登录或 yada yada),但我也希望能够在他们的个人资料上显示最后一次登录时间,以供他们查看。

对此的最佳做法是什么?目前我在想我应该让他们从他们的个人资料中选择/编辑时区,然后这反过来会将存储在数据库中的 NOW() 值转换为他们的时间。这将需要数据库中的另一列,但允许我为他们的时间进行正确的计算,并列出他们为他们的个人资料选择的当前时区。

例如,我在 est 所以我可以在他们的帐户资料中向他们显示 2013-09-04 02:46:05 EST数据库(我的服务器配置 tz)。

我意识到给用户他们的最后一次登录日期/时间似乎没什么用,但对于这个网站来说,它实际上对他们有一些价值,所以我想确保它反映“他们的”时间并且对他们有意义。

这是最佳实践还是更好的想法?

4

1 回答 1

1

您无法从服务器上找出用户的时区。时期。

我强烈建议您使用 UTC(从getutcdate())存储登录时间,因为它是明确的。如果您使用本地时间,则夏令时转换会导致“重复时间”,其中将记录相隔一小时发生的事件的相同时间。这使得无法确定事件实际发生的时间。

如果您不知道用户的时区,只需显示 UTC 并告诉用户它是 UTC,这样他们就不会感到困惑。

但是,如果您想知道用户的时区,您必须让客户端软件告诉您,也许通过询问用户并将其存储在他的偏好中。或者,您可以从 JavaScript 中猜测。

另请参阅此问题,其中更详细地讨论了时区问题:

于 2013-09-04T09:12:06.353 回答