为不同时区的用户在数据库中存储时间

这个问题在这里已经有了答案:

  • 夏令时和时区最佳做法[已关闭] 30个答案

  • 您已经登陆了其中一个更复杂的编程领域。

    如果您存储到您的数据库的时间是从MySQL中的'now()'派生的,那么您将在正确的时间存储事件,并使用UTC时间刻度来度量它。 对于国际应用来说,这可能是正确的选择。

    如果一个人只是说'4点',这个号码不会改变,除非你在页面上提供一个表格输入时间,然后可以用于计算。 在这种情况下,您可以询问每个用户的时区(例如注册时的一次),并计算UTC以保存'4:00',比如'11:00 UTC'。 如果其他用户登录,则可以从存储的UTC计算他的本地时间。

    顺便说一下,如果您使用Linux,则可以使用UTC(而不是本地时间)运行系统(它仍将显示本地时间,但内部时钟运行在UTC)。 如果您的系统是Windows或双引导,请勿执行此操作。 Windows不喜欢在不同时区运行的系统。

    从MySQL手册:

    CONVERT_TZ()将来自from_tz给出的时区的日期时间值dt转换为to_tz给出的时区,并返回结果值

    即像是:

    SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
            -> '2004-01-01 13:00:00'
    

    如果您将时间/日期存储为GMT,并且您的朋友注册并选择了“MET”

    链接地址: http://www.djcxy.com/p/29337.html

    上一篇: storing time in database for users in different time zones

    下一篇: Daylight saving issues