我正在使用jQuery Fullcalendar插件(http://arshaw.com/fullcalendar)。我只在"全天"活动中使用它。当用户创建一个事件时,我通过PHP将其作为日期存储在数据库中(2012-01-12)。当通过AJAX将事件列表发送到FullCalendar时,我将日期转换为Unix时间。
我预见到的问题是,假设服务器在美国,时区为美国,而客户端在欧洲。服务器发送2012-01-12 00:00:00(美国时间)的事件,该事件被转换为Unix时间。然后,客户端可能会看到2012-01-12 08:00:00(8小时后)的事件。
我如何确保如果一个活动在午夜,那么它在任何地方都是午夜——不需要调整任何时区。如果一个用户在1月12日创建了一个全天的活动,我需要世界各地的每个用户也在同一天看到它。
FullCalendar有一个选项ignoreTimezone(请参阅:http://arshaw.com/fullcalendar/docs/event_data/ignoreTimezone/),只需确保将其设置为true(默认情况下为*),并且无论用户的时区如何,用户都将看到服务器发送的相同时间。
(*我个人认为默认值是错误的,开发人员似乎在文档中承认了这一点,所以值得明确设置。)