php - 考虑到时区差异,如何计算一天中的平均时间?

标签 php mysql date laravel datetime

我正在使用 Laravel/PHP/MySQL 并以 UTC 格式存储所有日期和时间。

用户可以选择时区(例如东部),输入日期和时间,日期和时间将在存储前转换为 UTC。检索时,它将转换为用户选择的时区。

我的问题是如何在考虑时区的情况下(最好在数据库查询中)从一系列记录中获取一天中的平均时间?以下问题解决了 PHP 中一天中的平均时间,但没有解决时区问题。

How to calculate average time

这是我正在做的:

SEC_TO_TIME( AVG( TIME_TO_SEC( TIME(flights.departed_at) ) ) ) ) AS average_time

这适用于跨越夏令时/标准时间的记录。

例如:您可能有一条 UTC 日期时间为 2015-08-18 11:00:00 的记录这是用户在 EDT 中输入的 2015-08-18 07:00:00 .然后您输入了第二条记录,其 UTC 日期时间为 2015-11-10 12:00:00。由 EST 的用户在 2015-11-10 07:00:00 .如果您尝试计算一天中的平均时间,它应该等于 07:00:00但结果是 07:30:00 .

有什么办法可以克服这个问题吗?我处理这一切都错了吗?

提前致谢。

最佳答案

简而言之,您的代码运行正常。一旦日期采用 UTC 格式,您就必须重新计算它是否是 (1) 在夏令时期间输入的,(2) 由实际观察夏令时的人输入的,以及 (3) 在识别夏令时的地方输入的节省时间。

我真的只能想到一种方法来解决这个问题。

在保存数据时添加某种标志,将时间戳标记为夏令时。您可以使用此标志来调整时差。如何生成此标志由您决定。

关于php - 考虑到时区差异,如何计算一天中的平均时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637887/

相关文章:

php - 在 add_post_meta 中存储 Json 值

jquery - 用破折号分割日期字符串

php - MYSQL/PHP : newbie SQL question

mysql - 当某些记录有月/日/年而其他记录只有年份时如何存储日期?

java - 为什么 Calendar.setTimeZone() 不会影响从数据库检索的日期

php - 从短语中删除单词,单词之间只留一个空格

php - 使用 PHP 的正则表达式将另一个变量的特定数据存储在变量中

PHP Mysql 更新

mysql 创建表数据目录

php - 是否可以在两个表之间创建关系