2017-02-08 5 views
1

Итак, я использую Fullcalendar и в dayClick. Я пытаюсь найти события, которые соответствуют выбранному дню.moment.format() возвращает на следующий день

var events = $calendar.fullCalendar('clientEvents'); 
    if(events.length > 0) { 
     for (var i = 0; i < events.length; i++) { 
      if (date.format('YYYY-MM-DD') == events[i].start.format('YYYY-MM-DD')) { 

    ... 

Теперь

date.format('YYYY-MM-DD') 

возвращает день я щелкнул, но когда цикл доходит до того, что дни событий затем

events[i].start.format('YYYY-MM-DD') 

возвращается на следующий день. Это похоже на UTC, но это относится ко ВСЕМ дням с событиями. Не только сегодня. Я пробовал разные форматы и все тот же. Вот что я заметил:

n 
_ambigTime:false 
_ambigZone:true 
_d:Thu Feb 09 2017 08:00:00 GMT-0500 (EST) 
_f:"YYYY-MM-DD HH:mm:ss" 
_fullCalendar:true 
_i:"2017-02-08 13:00:00" 
_isAMomentObject:true 
_isUTC:true 
_isValid:true 
_locale:f 

Обратите внимание, что _d и _i разные. _i на самом деле правильная дата/время. Итак, как я могу это сделать?

ответ

1

Все свойства момента, начиная с _ (например, _d и _i) предназначены для внутреннего использования и не должны использоваться.

Если вы хотите проверить, представлен ли объект в два момента в тот же день, вы можете использовать isSame, передавая второй параметр, чтобы ограничить детализацию, вместо сравнения форматированных строк. В вашем случае:

date.isSame(events[i].start, 'day') 

Проблема заключается в том, что некоторые из ваших объектов создаются в режиме UTC (_isUTC: true), так что они будут отображаться с использованием времени UTC (предыдущий день в некоторых случаях), а не по местному времени.

Более подробная информация о режиме UTC here:

По умолчанию момента разбирает и отображает местное время.

Если вы хотите разобрать или отобразить момент в UTC, вы можете использовать moment.utc() вместо момента().

Это приводит нас к интересной функции Moment.js. UTC.

В режиме UTC все методы отображения будут отображаться в формате UTC вместо местного времени.

 Смежные вопросы

  • Нет связанных вопросов^_^