我有一个需要存储截止日期的应用程序。因此,如果英国的Bob在2月20日创建了一个任务并说它应该到期,我希望它在日历上显示为2月20日,而不管其他用户的时区。
在MySQL中将其作为UTC存储为DATETIME
会出现问题,如果Bob在2月20日凌晨1点创建任务,那么Jane在加利福尼亚州会将该任务视为截止日期为2月19日。
所以我的另一个想法是将其存储为DATE
,但我无法找到有关DATE
如何受到TimeZone影响的任何文献。
所以我的问题是,如果我的应用程序是PHP并且我的存储是MYSQL并且我想实现仅存储日期而不是日期/时间的日历,并且我希望事件在全局显示为特定日期,我该怎么办?它?
除了我的特殊需求之外,我还对其他人如何实施日期特定事件感到好奇(您是否只是让不同用户日历的日期不同?) - 例如Google Calendar / Outlook如何处理& #34;全天活动"?
答案 0 :(得分:2)
您只需将日期存储为DATE字段即可。由于您希望所有用户看到相同的日期,因此无需担心时区等。即将2014-10-11
存储在列中,然后向用户显示该值。
答案 1 :(得分:0)
最安全的方法是存储unix时间戳和作业创建者的时区。然后,在显示其他用户的日期时,使用该时区显示时间:
$timestamp=1413027859;
$timezone='Australia/Sydney';
$dt=new DateTime();
$dt->setTimestamp($timestamp);
$dt->setTimezone(new DateTimeZone($timezone));
$day=$dt->format('Y-m-d');