Javascript 如何在fullCalendar.io中将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:

我有UTC格式的日期和时间,例如:

我的日历生成代码。我正在使用

正如你所看到的,我在日期和时间中增加了<代码> 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();