完整日历日点击并删除时区更改的事件日期问题

时间:2015-12-14 12:20:19

标签: javascript date timezone fullcalendar momentjs

我使用完整日历作为我的日历功能。 IST工作正常,但当Timezone改为PST时,问题就出现了。

到目前为止,我所做的是

1)当用户点击日历时,他/她可以为点击日期添加事件,并且将使用日期点击日期选择模态弹出窗口。

2)与上面做同样的drop功能。

在这两种情况下,我都使用日期参数来获取全日历中的点击/删除日期

以下是我正在使用的代码段

用于调用日历的Javascirpt代码

$(document).ready(function () {
    $('#calendar').fullCalendar({
            eventSources: [

                {
                  url:'calendar/all_events',
                  type: 'POST',
                  data: {event_asset_id: $('#asset_id').val()},
                  error: function () {

                  },

                  textColor: 'black' // a non-ajax option
                }
            ],

            header: {
                left: 'prev',
                center: 'title, month,agendaWeek,agendaDay',
                right: 'next'
            },
            editable: true,
            draggable: false,
            droppable: true,
            drop: function (date, jsEvent, ui) {
              //getting the dropped date from calendar
              var droppedDate = date._d
              console.log(droppedDate);
            },
          dayClick: function (date, jsEvent, view) {
             //getting the clicked date from calendar
              var clickedDate = date._d
              console.log(clickedDate);
            }
      });
  });

div的HTML代码替换为日历

<div id='calendar'></div>

当时区更改为PST并且用户在日历上的15-12-2015点击/放下时以及当我按照以下方式控制日期对象时,问题是什么?

m {
_ambigTime: true
_ambigZone: true
_d: Mon Dec 14 2015 16:00:00 GMT-0800 (Pacific Standard Time)
_fullCalendar: true
_isAMomentObject: true
_isUTC: true
_locale: V.e
_fullCalendar_weekCalc: "local"
__proto__: l
_offset: 0
_pf: Object
__proto__: m
}

我不知道为什么它在PST时区失败了。我无法找到解决方案。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您不应该使用_d字段。 FullCalendar返回一个moment对象,_d和其他以下划线为前缀的字段是内部的。

相反,请使用您可用的display functions。当您需要字符串时,应使用format函数。

虽然您可以使用时刻的toDate函数来获取Date对象,但在这种情况下,您不会对结果感到满意,因为您使用的是FullCalendar的默认ambiguously zoned模式。格式化输出字符串更安全。 (参见该页面上的示例。)