我在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?我不想将我的时区更改为另一个时区,因为洛杉矶是我正确的时区,并且对于我需要记录时间戳的所有其他方法,它都是准确的。
发布于 2013-05-27 05:17:07
如果希望日期独立于时区,则应将其存储在不转换值的列中。因此,您选择的date列类型非常合适。
当您尝试在UNIX时间戳中获取该日期时,问题就出现了。UNIX时间戳是自19701.1.1970年格林尼治标准时间以来的秒数。这意味着mysql使用它的时区设置将您的日期转换为GMT中的时间戳。
PHP日期函数还依赖于php时区设置,并将当前时区中的时间戳转换为日期。
要从MySQL中获取日期而不将其转换为当前时区,请不要使用UNIX_TIEMSTAMP函数来获取它。按原样获取或使用DATE_FORMAT函数。
发布于 2013-05-27 04:40:43
您应该使用DateTime对象。
$timezone = new DateTimeZone('Europe/London');
$date = new DateTime();
$date->setTimestamp($timestamp);
$date->setTimezone($timezone);
echo $date->format('Y-m-d H:i:s');https://stackoverflow.com/questions/16763348
复制相似问题