将服务器时间转换为本地时间

时间:2017-05-10 04:29:18

标签: php sql date time

在印度,如果我在数据库中通过php date(),mysql NOW()和三列中的timestamp节省时间在2017-05-09 10:12:21左右。那么它会产生结果

date()                      NOW()            timestamp

2017-05-09 04:38:37 | 2017-05-08 22:38:37 | 2017-05-08 22:38:37

现在我想根据全球用户时区将此时间转换为当地时间。我怎么能这样做。请原谅我在php中遇到的任何错误。

2 个答案:

答案 0 :(得分:0)

$date = new DateTime($yourTimestamp, new DateTimeZone($timezone));
echo $date->format('Y-m-d H:i:sP');

其中$yourTimestamp是本地时间的时间戳,而$timezone是您想要将时间戳转换为的时区。

时区:http://php.net/manual/en/timezones.php

答案 1 :(得分:0)

根据this,如果您的mysql列的类型为TIMESTAMP,则日期时间以UTC格式存储:在插入和检索时,它将从本地时区转换。

要查看MySQL的默认时区,请尝试以下操作:

SELECT @@system_time_zone;

PHP的date函数从当前的unix时间戳返回格式化的日期字符串。它将使用当前的默认时区来格式化时间戳。您可以使用以下命令获取默认时区:

echo date_default_timezone_get();

从我的问题例子中我理解,这两个时区必须不同,或者它们会显示相同的时间。

我认为标准做法是将所有默认时区设置为UTC,并根据请求的来源将它们转换为本地时区。这样做并不像看起来那么简单,因为时区不是HTTP规范的一部分,但这可以帮助您:How to detect user's timezone?

如果您只想将所有内容存储在当地时区并确信用户不会介意,您可以将php和mysql中的默认时区更改为您当地的时区。

MySQL:How do I set the time zone of MySQL?

PHP:http://php.net/manual/en/function.date-default-timezone-set.php