在印度,如果我在数据库中通过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中遇到的任何错误。
答案 0 :(得分:0)
$date = new DateTime($yourTimestamp, new DateTimeZone($timezone));
echo $date->format('Y-m-d H:i:sP');
其中$yourTimestamp
是本地时间的时间戳,而$timezone
是您想要将时间戳转换为的时区。
答案 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