php - MySQL 和 PHP 存储日期和时间的正确方法与夏令时相同

标签 php mysql

自从夏令时发生一周多前以来,我的数据库已经困惑,一切都还需要 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/

相关文章:

php - 为什么我会得到相同的结果?

javascript - 使用 ajax、php、html 进行 POST

mysql - 在请求 Mysql 中结合 IN 和 Like

python - Django书籍第五章数据库引擎设置

javascript - jQuery 中的三元运算符未按预期工作

php - 几秒钟的延迟 apache 响应

php - Codeigniter MySQL 查询

PHP MySQL 查询使用串联赋值变量进行插入

sql - 选择销售给一组给定客户的产品

php - 更改数组中的索引顺序