全日历日单击并删除了时区更改的事件日期问题
Full Calendar day click and dropped the event date issue with Timezone change
我正在为我的日历功能使用完整日历。 IST 一切正常,但当时区更改为 PST 时出现问题。
到目前为止,我所做的是
1) 当用户点击日历时 he/she 可以为点击日期添加一个事件,模式弹出窗口将选择点击日期。
2) 与上面对 drop 函数所做的相同。
在这两种情况下,我都使用日期参数来获取 clicked/dropped 全日历日期
以下是我正在使用的代码片段
调用日历的 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);
}
});
});
HTML div 的代码替换为日历
<div id='calendar'></div>
问题是当日历上的时区更改为 PST 并且用户 clicks/drops 在 15-12-2015 并且当我控制日期对象时 returns 如下
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 时区失败。我找不到解决方案。
非常感谢任何帮助。
您不应使用 _d
字段。 FullCalendar returns 一个 moment
对象,_d
和其他以下划线为前缀的字段是 moment.
的内部字段
而是使用您可用的 display functions。当你需要一个字符串时,你应该使用format
函数。
虽然您可以使用 moment 的 toDate
函数来获取 Date
对象,但在这种情况下您不会对结果感到满意,因为您使用的是 FullCalendar 的默认 ambiguously zoned 模式。格式化输出字符串更安全。 (请参阅该页面上的示例。)
我正在为我的日历功能使用完整日历。 IST 一切正常,但当时区更改为 PST 时出现问题。
到目前为止,我所做的是
1) 当用户点击日历时 he/she 可以为点击日期添加一个事件,模式弹出窗口将选择点击日期。
2) 与上面对 drop 函数所做的相同。
在这两种情况下,我都使用日期参数来获取 clicked/dropped 全日历日期
以下是我正在使用的代码片段
调用日历的 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);
}
});
});
HTML div 的代码替换为日历
<div id='calendar'></div>
问题是当日历上的时区更改为 PST 并且用户 clicks/drops 在 15-12-2015 并且当我控制日期对象时 returns 如下
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 时区失败。我找不到解决方案。
非常感谢任何帮助。
您不应使用 _d
字段。 FullCalendar returns 一个 moment
对象,_d
和其他以下划线为前缀的字段是 moment.
而是使用您可用的 display functions。当你需要一个字符串时,你应该使用format
函数。
虽然您可以使用 moment 的 toDate
函数来获取 Date
对象,但在这种情况下您不会对结果感到满意,因为您使用的是 FullCalendar 的默认 ambiguously zoned 模式。格式化输出字符串更安全。 (请参阅该页面上的示例。)