Javascript 如何在fullCalendar.io中将UTC日期转换为用户时区
我有UTC格式的日期和时间,例如: 我的日历生成代码。我正在使用Javascript 如何在fullCalendar.io中将UTC日期转换为用户时区,javascript,jquery,timezone,fullcalendar,momentjs,Javascript,Jquery,Timezone,Fullcalendar,Momentjs,我有UTC格式的日期和时间,例如: 我的日历生成代码。我正在使用 正如你所看到的,我在日期和时间中增加了 t>代码>,使之成为UTC格式。 var calendarEl = document.getElementById('calendar'); var calendar = new FullCalendar.Calendar(calendarEl, { plugins: [ 'dayGrid', 'timeGrid', 'list', 'interaction' ], header:
正如你所看到的,我在日期和时间中增加了<代码> t>代码>,使之成为UTC格式。
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'dayGrid', 'timeGrid', 'list', 'interaction' ],
header: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
},
defaultDate: '2019-04-12',
navLinks: true,
editable: false,
eventLimit: true,
events: sessionCalendar,
timeZone: timeZone // var timeZone = "Asia/Kolkata"
});
calendar.render();
在上面的代码中,我设置了时区值,它是动态的。尽管如此,我还是在UTC格式的屏幕截图中看到了与start\u date\u time
相同的日期和时间
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'dayGrid', 'timeGrid', 'list', 'interaction' ],
header: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
},
defaultDate: '2019-04-12',
navLinks: true,
editable: false,
eventLimit: true,
events: sessionCalendar,
timeZone: timeZone // var timeZone = "Asia/Kolkata"
});
calendar.render();
如何将UTC日期和时间转换为用户指定的时区
根据评论。我在末尾加了“Z”
函数ConvertDateAccordingToz(日期字符串:字符串,时区偏移:数字=0){
}我已经解决了这个问题,但不是真心的 在调用initialize calendar之前,我将日期和时间转换为用户特定的时区
datetime_utc: function (datetime) {
return moment.utc(datetime, 'YYYY-MM-DD HH:mm:ss').clone().tz(timeZone).format('YYYY-MM-DD HH:mm:ss');
},
上述moemnt功能可以轻松地将日期和时间转换为用户特定的时区。我只是更新了时间。我还从can日历功能中删除了时区属性
//for loop start
sessionCalendar.push(
{
title: `${course["course_name"]}`,
start: gbl.datetime_utc(start_date_time),
end: gbl.datetime_utc(end_date_time),
},
)
//for loops end
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'dayGrid', 'timeGrid', 'list', 'interaction' ],
header: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
},
defaultDate: '2019-04-12',
navLinks: true,
editable: false,
eventLimit: true,
events: sessionCalendar,
});
calendar.render();
这仍然是一个非常不完整的答案。Fullcalendar.io代码应该可以完成这项工作 还可以尝试在末尾添加一个“Z”,以便对日期进行分析<代码>新日期('2019-05-08T11:18:00')!=新日期('2019-05-08T11:18:00Z')代码>。然后你可以从Date对象中获取本地datetime。我添加了,但没有更改。日历仍显示相同的日期和时间。我猜您必须深入查看完整日历文档,以找到库希望您设置时区的正确方式:/是的,我也在读文档,同时我在这里发布了一篇文章,如果有人知道哪里出了问题。无论如何,谢谢你的帮助。只是为了让我理解你为什么要开始日期时间。拆分(“”)。加入(“”)?你能改进我的答案吗?因为我知道如何将UTC日期转换为用户特定的时区。我已经通过moment.js做到了这一点,它工作得很好。在这里,我需要用UTC日期时间指定时区,它应该自动转换。但这并没有发生。我认为我们不应该添加
z
来假设它是UTC日期,它应该来自服务器端。你是对的,你也可以在你方分配z
,尝试将我的函数转换日期传递给日历
//for loop start
sessionCalendar.push(
{
title: `${course["course_name"]}`,
start: gbl.datetime_utc(start_date_time),
end: gbl.datetime_utc(end_date_time),
},
)
//for loops end
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'dayGrid', 'timeGrid', 'list', 'interaction' ],
header: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
},
defaultDate: '2019-04-12',
navLinks: true,
editable: false,
eventLimit: true,
events: sessionCalendar,
});
calendar.render();