Как конвертировать дату UTC в часовой пояс пользователя в fullCalendar.io - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть дата и время в формате UTC, например:

event start and end time

Мой календарь генерирует код. Я использую fullcalendar.io .

//for loop start
sessionCalendar.push(
    {
      title: `${course["course_name"]}`,
      start: start_date_time.split(" ").join("T"),
      end: end_date_time.split(" ").join("T"),
    },
)
//for loops end

Как видите, я добавил 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();

В приведенном выше коде я установил значение timeZone, которое является динамическим. Тем не менее, я вижу ту же дату и время, что и start_date_time на скриншоте в формате UTC.

Как преобразовать дату и время UTC в указанный пользователем часовой пояс?

Согласно комментарию. Я добавил "Z" в конце

UTC timezone

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Я решил проблему, но не искренне.

Перед вызовом инициализации календаря я конвертирую дату и время в пользовательский часовой пояс.

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 позволяет легко конвертировать дату и время в пользовательский часовой пояс.Я только что обновил время.Также я удаляю свойства часового пояса из функции календаря банок.

//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 код должен делать эту работу.

0 голосов
/ 26 апреля 2019

функция convertDateAccordingToTZ (dateString: строка, timeZoneOffset: number = 0) {

const dateObj = new Date(dateString);
const calculatedOffset = dateObj.getTimezoneOffset() + (timeZoneOffset * 60);
const formattedTime = dateObj.valueOf() + (calculatedOffset * 60000);

return new Date(formattedTime);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...