Php 存储到期日的最佳方式是什么?

Php 存储到期日的最佳方式是什么?,php,mysql,date,datetime,timezone-offset,Php,Mysql,Date,Datetime,Timezone Offset,我有一个需要存储到期日期的应用程序。因此,如果英国的Bob创建了一个任务,并说它将在2月20日到期,我希望它在日历上显示为2月20日,而不考虑其他用户的时区 在MySQL中将其存储为UTC asDATETIME,会出现一个问题,即如果Bob在2月20日凌晨1点创建了任务,那么加利福尼亚州的Jane会认为该任务将于2月19日到期 所以我的另一个想法是将其存储为DATE,但我找不到任何关于DATE如何受时区影响的文献 所以我的问题是,如果我的应用程序是PHP,我的存储是MYSQL,我想实现只存储日期

我有一个需要存储到期日期的应用程序。因此,如果英国的Bob创建了一个任务,并说它将在2月20日到期,我希望它在日历上显示为2月20日,而不考虑其他用户的时区

在MySQL中将其存储为UTC as
DATETIME
,会出现一个问题,即如果Bob在2月20日凌晨1点创建了任务,那么加利福尼亚州的Jane会认为该任务将于2月19日到期

所以我的另一个想法是将其存储为
DATE
,但我找不到任何关于
DATE
如何受时区影响的文献

所以我的问题是,如果我的应用程序是PHP,我的存储是MYSQL,我想实现只存储日期而不存储日期/时间的日历,并且我希望事件显示为全局的某个日期,我应该怎么做


除了我的特殊需求之外,我还对其他人如何实现特定于日期的事件感到好奇(你只是让不同用户日历上的日期不同吗?)——例如,谷歌日历/Outlook如何处理“全天事件”最安全的方法是存储unix时间戳和作业创建者的时区。然后,当为其他用户显示日期时,使用该时区显示时间:

$timestamp=1413027859;
$timezone='澳大利亚/悉尼';
$dt=新的日期时间();
$dt->setTimestamp($timestamp);
$dt->setTimezone(新日期时区($timezone));
$day=$dt->format('Y-m-d');

您可以将日期存储为日期字段。因为您希望所有用户看到相同的日期,所以不必担心时区之类的问题。即在列中存储
2014-10-11
,然后向用户显示该值。

以澄清;你想让每个人,不管他们的时区是什么,都看到他们的任务在20号在他们自己的时区到期,而不是在创建任务的人的时区到期?一个例子的用法可能是填写一个调查,让简在午夜完成它是荒谬的,当每个人都能做到这一点的时候,一个24小时的窗口并不重要。是的,我希望每个人不管他们的时区在10月13日星期一的日历上看到有什么事情要做。所以你会在MySQL中使用两列来存储数据吗?DATETIME/TIMESTAMP和“用户时区”VARCHAR(?)就我个人而言,我从不在数据库中使用
DATETIME
类型,因为它们似乎从来没有按照我预期的方式工作,而且(有时微妙地)对于每种SQL风格都有所不同。因此,如果时区不相关,我只存储unix时间戳(例如,某个事件发生的时间)。如果时区相关,我将其存储在时间戳旁边的单独字段中,或者间接地存储,例如,通过将外键存储到存储该人员时区的人员表中。