Добавление часов через переход DST в моменты - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь создать график с вертикальной линией сетки (выходящей из оси X) каждые 0, 6 утра, полдень и 18:00, используя d3.Я делаю это вручную вычисляя значения тиков в моментах.Я легко вычисляю начало дня с помощью

 firstPoint = momenttz(startDate).startOf('day')

, а затем добавляю к нему 6 часов в цикле.

for (let i = 0; i <= days * 24; i += 6) {
    hourTickValues.push(firstPoint.clone().add(i, 'hours'));
}

При переходе на летнее время или без него я хочудержите линии по местному времени 6 утра, полдень и 6 вечера.Это будет означать, что два раза в год интервал между сетками будет отличаться, так как между 12:00 и 6:00, входящим в DST, и 7 часами, когда выходит, всего 5 часов.что при добавлении часов ко времени не учитывается переход на летнее время, но при добавлении дней это будет происходить.Я также обнаружил, что добавление дробных дней не работает, оно всегда округляется до целого числа.

Итак, как я могу надежно создать объект даты (momentjs) для каждого 6-го часа в соответствии с настройками часов DST?

1 Ответ

0 голосов
/ 29 мая 2019

Я решил эту проблему, установив каждый раз объекты каждый час после создания.

for (let i = 0; i <= days * 24; i += 6) {
    hourTickValues.push(firstPoint.clone().add(i, 'hours'));
    hourTickValues[hourTickValues length - 1].hours(i % 24);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...