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