我使用的是Arshaw fullcalendar插件1.5.3版本,
问题是,我在上午9点用本地机器时区EST(东部时间)创建了一个事件,当我将本地机器时区更改为IST时,该事件会出现在日历中的不同时间7:30。
它适用于东部时区,如果更改,记录就会出现在错误的时间。
请帮助我尝试将ignoreTimezone
初始化为false并更新了版本,但似乎没有任何帮助。
// initialize the fullcalendar and set ignore timezone to false
$(document).ready(function() {
$('#calendar').fullCalendar({
events: {
url: 'http://www.google.com/your_feed_url/',
className: 'gcal-event', // an option!
currentTimezone: 'America/Chicago' // an option!
},
ignoreTimezone: false
});
});
/* Passing the event to fullcalendar to display the slots in calendar properly
It accepts the start and end time in timestamp */
event.id = appId;
event.start = startTime; // 1389358800 timestamp
event.end = endTime; // 1389359700 timestamp
event.editable = presentEvent;
event.allDay = false;
event.patient_name = patient_name;
events.push(event);
_ac.fullCalendar('addEventSource',events);
它在东部时区正常工作,插槽在上午8:00(开始时间)-上午8:15(结束时间)正常显示
当我将本地时区更改为IST时,插槽出现在下午6:30(开始时间)到下午6.45(结束时间)
来自文档:
有时,FullCalendar显示事件时间的方式与谷歌日历界面不同,这可能会让人感到困惑。这涉及两个因素:
日历的时区,通过";日历设置";单击日历名称旁边的箭头后
您的谷歌帐户的时区,通过";设置";谷歌日历屏幕右上角的链接(靠近"注销"链接)
当两个时区相同时,您应该没有问题。当它们不同时,FullCalendar将显示日历的时区中的时间。因此,时间将与您在谷歌日历界面中看到的不同,因为它们将根据日历的GMT进行调整。解决方案是使用
currentTimezone
选项。如果将其设置为与您的谷歌帐户相同的时区,则所有日期应显示一致。
由于您已向谷歌日历询问America/Chicago
时区,因此您得到的值从美国中部时间开始(而非东部),然后转换为GMT作为数字时间戳。
如果您的日历实际上是IST(印度标准时间),那么您应该将时区请求为Asia/Kolkata
。
由于您使用的是数字Unix时间戳,而不是解析ISO日期字符串,因此不需要ignoreTimezone
选项(请参阅文档)。无论哪种方式,它都不会影响结果,所以你可以删除它