自从夏令时发生一周多前以来,我的数据库已经困惑,一切都还需要 1 小时,所以我正在努力找出解决此问题的最佳方法并防止此问题继续发展。
现在是美国东部时间 2017 年 11 月 8 日下午 2:16,当我使用 datetime=NOW()
提交内容时,输出结果为 2017 年 11 月 8 日下午 3:16美国东部时间
在夏令时到来之前,它当然运行良好,但现在关闭了一个小时。
我尝试过使用
date_default_timezone_set('美国/芝加哥');
然后还尝试了 date_default_timezone_set('UTC');
但最终都显示了完全相同的日期/时间,并使用以下输出:
echo date( 'm/d/y g:i A', strtotime($row['ticket_assigned_date']));
我看到了其他方法,例如使用 CONVERT_TZ('2010-01-01 12:00','+00:00','-07:00')
但是我真的想避免这种情况因为使用大量的 select 语句似乎很糟糕,我也必须这样做,这样我的网站对美国完全友好,所以他们在设置中设置时区是最好的,在 PHP 中设置时区将是一个更好的选择如果可能的话。
另外,我想确保,如果保存的时间确实是在美国东部时间下午 2:16,然后夏令时到来,那么无论如何,存储的值在未来仍然会返回美国东部时间下午 2:16。
最佳答案
php 有更好的方法:
您可以使用 time() 函数并将时间插入为 bigint 时间戳值始终为 UTC(以秒为单位的值)!
$tm = time();
echo date('Y-m-d H:i:s', $tm);
如果您需要选择时间<当前时间:
,则很简单SELECT from data WHERE time < $tm;
最后一天(时间总是第二位):
$tm = time() - 60 * 60 * 24;
SELECT from data WHERE time > $tm;
关于php - MySQL 和 PHP 存储日期和时间的正确方法与夏令时相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47187900/