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

Full Calendar day click and dropped the event date issue with Timezone change

本文关键字:事件 问题 日期 时区 日历 单击 删除      更新时间:2023-09-26

我的日历功能使用完整的日历。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的HTML代码

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

问题是,当时区更改为PST时,用户在2015年12月15日点击/放下日历,当我控制台日期对象时,它返回如下

m{_ambigTime:true_ambigZone:true_d: 2015年12月14日星期一16:00:00 GMT-0800(太平洋标准时间)_fullCalendar:true_isAMomentObject:true_isUTC:true_语言环境:V.e_fullCalendar_weekCalc:"本地"__原型__:l_偏移:0_pf:对象__原型__:m}

我不知道为什么它在太平洋标准时间区失败。我找不到解决办法。

非常感谢您的帮助。

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

相反,请使用可用的显示功能。当您需要字符串时,应该使用format函数。

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