получить даты в диапазоне в рескрипте и летнее время
У меня есть календарь на моем сайте, который принимает дату начала и дату окончания и передает их в функцию, которая вычисляет даты между ними. давай сидим, у нас есть дата начала
Mon Mar 29 2021 03:00:00 GMT+0300 (Eastern European Summer Time)
и дата окончания
Mon Apr 05 2021 03:00:00 GMT+0300 (Eastern European Summer Time)
; эта функция должна вернуть [«30/3/2021», «31/3/2021», «1/4/2020», «2/4/2020», «3/4/2020», «4/4 / 2020 "]
let getDatesInRange = (start, end) => {
let dates = ref([])
let current = ref(start)
while current.contents <= end {
dates := dates.contents->Js.Array2.concat([current.contents->toUTCDateString])
current := {
let date = current.contents->toUTCDateString->Js.Date.fromString
date->Js.Date.setDate(date->Js.Date.getDate +. 1.0)->ignore
date
}
}
dates.contents
}
и это функция toUTCDateString, которая принимает дату и дает ее строковую версию
let toUTCDateString = date => {
let date = date->External.unSafeCastToJsObject
date["toISOString"]()["split"]("T")[0]
}
Эти функции работали нормально до тех пор, пока время не изменилось на летнее время; мы получаем час, так что день застрял там по какой-то причине. Любой орган сталкивался с этой проблемой раньше, и кто будет решать такие проблемы со временем?