我在mysql中存储的日期在查看数据库时看起来很好,但是当我查看日期时,它总是落后于一天 .
mysql数据类型是“date” . 我使用UNIX_TIMESTAMP从mysql获取日期列 . 我使用php的date()函数显示日期 . 我正在使用bluehost并配置php.ini来使用洛杉矶时区 .
示例:我在2013-05-08创建了一篇新文章和密钥 . 它将作为日期类型存储在显示2013-05-18的mysql中 . 但是当我稍后再观看它时会显示2013-05-07 .
时间戳是1367992800,格林尼治标准时间格林威治标准时间2013年5月8日星期三06:00:00,但在我的时区2013年5月7日星期二11:00:00 PM .
如何显示2013-05-18的原定日期?我不想将我的时区改为另一个,因为洛杉矶是我正确的时区,对于我需要记录时间戳的所有其他方法,这是准确的 .
2 回答
如果您希望日期与时区无关,则应将其存储在不转换值的列中 . 所以您选择的
date
列类型非常合适 .当您尝试在UNIX TIMESTAMP中获取该日期时,问题就出现了 . UNIX TIMESTAMP是自格林威治标准时间1970年1月1日以来的秒数 . 这意味着mysql使用它的时区设置将您的日期转换为GMT中的时间戳 .
PHP日期函数还取决于php时区设置,并将时间戳转换为当前时区的日期 .
要从MySQL获取日期而不将其转换为当前时区,请不要使用UNIX_TIEMSTAMP函数获取它 . 按原样或使用DATE_FORMAT函数获取它 .
您应该使用DateTime对象 .