FullCalendar不遵守指定的时区

时间:2017-06-28 21:06:58

标签: fullcalendar

我正在尝试在FullCalendar中显示America / New_York时间的事件。我可以弹出一个显示正确的日期/时间,但FullCalendar会修改开始和结束本地时区,无论我的设置如何。

作为一个例子,我有一个事件设置为6月30日上午12点,当我将我的本地时区调整到中央时间时,我在控制台中看到"开始"修改为6月29日晚上11点。思想?谢谢!

function(result, event){
 if (event.status) {
  var rightNow  = moment.tz("America/New_York");
  $.each(result,function(){
    this.start = moment.tz(this.Event_Time__c, "America/New_York");
    this.StartDate = this.start;
    this.end = moment.tz(this.Event_Time__c, "America/New_York");
    this.EndDate = this.end;
    this.Status = this.Event_Display_Status__c;
    var day = moment.tz(this.Event_Time__c, "America/New_York").format("DD");
    var isWeekend = (day == 6) || (day == 0);    // 6 = Saturday, 0 = Sunday
    var isPast = (rightNow > moment.tz(this.Event_Time__c, "America/New_York"));
    this.isPast = isPast;
    if ( isPast ) {
        this.Event_Display_Status__c = 'Event Passed';
        this.Status = 'Event Passed';
    }
    resultOut.push(this);
  });
  initFullCalendar(resultOut);
 }
 else{
   alert(event.message);
 } 
}

function initFullCalendar(calendarEntries){
    $('#calendarx').empty();
    $('#calendarx').fullCalendar({
        timezone: 'America/New_York',
        editable: false,
        weekends: true,
        eventSources: [{
                events: calendarEntries
        }] 
    });
}

1 个答案:

答案 0 :(得分:0)

在初始化中,设置以下选项:

{ timezone: "local" }

这并不意味着计算机本地化,而是指提供的日期对象的本地化。

在进入的数据中,设置确保提供偏移量,如下所示:

{ title: "event1", start: "2017-06-28T15:00:00-04:00" }

对于 America / New_York ,它应为-04:00或-05:00,具体取决于夏令时和确切位置。

另一个技巧是提供一个没有任何偏移的日期(“2017-06-28T15:00:00”),然后将你的时区ini选项设置为:

{ timezone: "America/New_York" }

详情请见:https://fullcalendar.io/docs/timezone/timezone/