RRule не устанавливает правильное время, если установлен dtstart - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь создать экземпляр правила и затем установить дату / время начала (dtstart), но события получают неправильное время.

  1. Я инициализирую экземпляр правила с помощью базовой строки правила: RRULE:FREQ=WEEKLY;INTERVAL=1;WKST=MO;COUNT=20
  2. Я установил дату начала в rrule.options примерно так: rrule.options.dtstart = new Date(Date.UTC(2019, 1, 4, 12, 30, 0))
  3. I console.log rrule.all(), чтобы увидеть сгенерированные события.Все события теперь имеют текущее время вместо времени, установленного через dtstart.Это должно показывать 12:30 вместо

Я сделал эту песочницу , демонстрирующую проблему.

Теперь, когда я делаю то же самоена демонстрационной странице rrule.js я получаю правильные результаты.На этой демонстрационной странице сделайте следующее, чтобы понять, что я имею в виду: enter image description here

Вот результаты:

enter image description here

Как видите, время событий установлено правильно!

Любой совет приветствуется!

1 Ответ

0 голосов
/ 04 февраля 2019

Нашел ответ:

Если вы явно задали distart в конструкторе, тогда проблема решена.

Сравните эти примеры:

Пример первый: даетправильные результаты:

const rrule = new RRule({
  freq: RRule.WEEKLY, 
  interval: 1, 
  wkst: RRule.MO, 
  count: 20,
  dtstart: new Date(Date.UTC(2019, 1, 4, 12, 30, 0))})

Пример два: дает неправильные результаты

const rrule = new RRule({
  freq: RRule.WEEKLY, 
  interval: 1, 
  wkst: RRule.MO, 
  count: 20})
rrule.options.dtstart = new Date(Date.UTC(2019, 1, 4, 14, 30, 0));

Для меня это выглядит немного интуитивно, потому что установка dtstart всегда должна давать один и тот же результат, независимо от того, установлен ли он вконструктор или установить его потом.

...