首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期因时区设置而更改

问日期因时区设置而更改
EN

Stack Overflow用户
提问于 2013-05-27 04:19:47
回答 2查看 478关注 0票数 1

我在mysql中存储的日期在查看数据库时看起来很好,但当我查看日期时,它总是落后于一天。

mysql数据类型为"date“。我使用UNIX_TIMESTAMP从mysql获取日期列。我使用php的date()函数显示日期。我正在使用bluehost并将php.ini配置为使用洛杉矶时区。

时间戳是1367992800,这是Wed,2013.5.08 06:00:00 GMT,但在我的时区,2013.5.07,11:00:00 PM

如何显示原定日期2013-05-18?我不想将我的时区更改为另一个时区,因为洛杉矶是我正确的时区,并且对于我需要记录时间戳的所有其他方法,它都是准确的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-27 05:17:07

如果希望日期独立于时区,则应将其存储在不转换值的列中。因此,您选择的date列类型非常合适。

当您尝试在UNIX时间戳中获取该日期时,问题就出现了。UNIX时间戳是自19701.1.1970年格林尼治标准时间以来的秒数。这意味着mysql使用它的时区设置将您的日期转换为GMT中的时间戳。

PHP日期函数还依赖于php时区设置,并将当前时区中的时间戳转换为日期。

要从MySQL中获取日期而不将其转换为当前时区,请不要使用UNIX_TIEMSTAMP函数来获取它。按原样获取或使用DATE_FORMAT函数。

票数 1
EN

Stack Overflow用户

发布于 2013-05-27 04:40:43

您应该使用DateTime对象。

代码语言:javascript
复制
$timezone = new DateTimeZone('Europe/London');

$date = new DateTime();
$date->setTimestamp($timestamp);
$date->setTimezone($timezone);

echo $date->format('Y-m-d H:i:s');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16763348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档