使用PHP自动将UTC转换为本地时间

使用PHP自动将UTC转换为本地时间,php,mysql,datetime,Php,Mysql,Datetime,我在PHP中使用MySQL,该项目是一种通知管理器 如果有人做了某件事,需要在公共场所发布新的通知 问题是-我们有来自多个时区的用户,目前我使用“datetime”作为字段类型,因此我输入的任何内容都会转换为UTC 例如:Im来自印度(+5:30),如果我在2015年3月21日22:50:00创建通知,则它将以DB形式保存为2015年3月21日17:20:00 存储在所有区域都能很好地工作,但在检索时,我会显示为21/3/2015 17:20:00(UTC),但我希望在我的时区(IST+5:30

我在PHP中使用MySQL,该项目是一种通知管理器

如果有人做了某件事,需要在公共场所发布新的通知

问题是-我们有来自多个时区的用户,目前我使用“datetime”作为字段类型,因此我输入的任何内容都会转换为UTC

例如:Im来自印度(+5:30),如果我在2015年3月21日22:50:00创建通知,则它将以DB形式保存为2015年3月21日17:20:00

存储在所有区域都能很好地工作,但在检索时,我会显示为21/3/2015 17:20:00(UTC),但我希望在我的时区(IST+5:30),所以我期望的是21/3/2015 22:50:00

是否有一种方法可以在查询本身中提及,以在获取本身中转换时间

或者以任何其他方式进行转换和进一步处理

在此方面的任何帮助都将不胜感激


谢谢

您可以使用功能
convert_z
,因此在选择时可以使用以下功能

mysql> select convert_tz('2015-03-21 17:20:00','+00:00','+05:30') as ist_time;
+---------------------+
| ist_time            |
+---------------------+
| 2015-03-21 22:50:00 |
+---------------------+
1 row in set (0.00 sec)

您只需将硬编码日期“2015-03-21 17:20:00”更改为所选内容中的列名。

您可以通过

在您的php文件中,您只需转换从mysql收到通知后的日期:

 $date = new DateTime($date . " " . "UTC");
 $date->setTimezone(new DateTimeZone($timeZoneTo));//$timeZoneTo you get it from JSTZ

在查询中执行此操作的最简单替代方法是使用PHP的DateTime对象
timestamp
字段进行UTC转换,而不是
DateTime
字段。至少也许这是发生在PHP方面的事情?请出示一些代码。酷@Abhik,我的问题是如何设置+5:30?我知道我的是IST,所以我设置+5:30,如何使其动态化,以便它找到客户端时区并相应地进行操作?这是一个大主题,如果您将用户时区存储在db中,那么在每个用户查看数据时,您需要将utc转换为用户的时区。你可以查看php
DateTime
对象,它有一些很酷的时区转换函数。这是合理的,但要知道JSTZ会对时区进行有根据的猜测。这通常是正确的,但有时不是。