Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完整日历日单击并删除带有时区更改的事件日期问题_Javascript_Date_Timezone_Fullcalendar_Momentjs - Fatal编程技术网

Javascript 完整日历日单击并删除带有时区更改的事件日期问题

Javascript 完整日历日单击并删除带有时区更改的事件日期问题,javascript,date,timezone,fullcalendar,momentjs,Javascript,Date,Timezone,Fullcalendar,Momentjs,我正在使用完整的日历功能。IST一切正常,但当时区更改为PST时,问题就出现了 到目前为止,我所做的是 1) 当用户单击日历时,他/她可以为单击的日期添加事件,并且将选择带有单击日期的模式弹出窗口 2) 与上面对drop函数所做的操作相同 在这两种情况下,我都使用日期参数来获取完整日历中单击/删除的日期 下面是我正在使用的代码片段 调用日历的Javascirpt代码 $(document).ready(function () { $('#calendar').fullCalendar({

我正在使用完整的日历功能。IST一切正常,但当时区更改为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 id='calendar'></div>
用日历替换div的HTML代码

$(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 id='calendar'></div>

问题是,当时区更改为PST时,用户在2015年12月15日在日历上单击/删除,当我控制台date对象时,它返回如下所示

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 } m{ _ambigTime:对 _ambigZone:是的 _d:2015年12月14日星期一16:00:00 GMT-0800(太平洋标准时间) _完整日历:正确 _I重要对象:正确 _isUTC:对 _地点:V.e _fullCalendar\u weekCalc:“本地” __原型:1 _偏移量:0 _pf:对象 __原型:m } 我不知道为什么它在PST时区失败。我找不到解决办法


非常感谢您的帮助。

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

取而代之的是,使用可用的。需要字符串时,应使用
格式
函数


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

这对我很有效,我现在使用date对象获得了正确的日期。。我更改了代码以获取日期,而不是
date.\u d
替换为
date.format()
以获取我需要的相关格式。