繁体   English   中英

PHP MYSQL将时区感知日期转换为UTC

[英]PHP MYSQL convert timezone aware dates to UTC

我正在使用现有的调度应用程序,该应用程序将约会日期/时间在mysql中存储为“ 2013-12-25 09:00:00”。 到目前为止,还没有考虑任何时区,因为该时间只是简单地发送到前端并以某种基本方式显示。 现在,我想构建一些功能,例如“在应用程序发出X小时前发送提醒”。 显然,要执行此操作,我需要知道时区以确定我是否在appt之前X个小时。

我不确定现在从哪里开始。 如何在不知道时区的情况下将现有日期转换为UTC? 如果我确实从用户那里收集了时区信息,我该如何将现有的mysql datetime格式转换为UTC? 我也对使用UTC日期的一般往返工作流程有疑问。 这是我认为的工作方式:

  1. 将所有日期存储在UTC
  2. 将所有日期传递给UTC客户
  3. 让客户端为用户应用偏移

创建新约会时:

  1. 根据用户偏移量将日期/时间转换为UTC
  2. 存放在UTC
  3. 用#1重新启动进程

这个准确吗? 感谢您的任何帮助,希望能够正确执行此操作,但是不确定从所有这些现有应用程序开始,并且没有时区信息:)

MySQL的TIMESTAMP数据类型(与DATETIME相对)存储在UTC内部。 客户端与客户端的time_zone之间的转换是在从客户端接收数据或向客户端发送数据后执行的:只需在会话开始时设置该变量即可:

SET time_zone = 'GMT';

至于转换现有时间,您可以利用MySQL的CONVERT_TZ()函数:

UPDATE my_table SET my_column = CONVERT_TZ(my_column, 'GMT', 'MET');

在“ MySQL服务器时区支持”下阅读更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM