Мы используем ngx- bootstrap (5.5.0) в нашем приложении angular (8.2.14), созданном с помощью angular -cli (8.3.21). Существует проблема с модулем выбора даты: он пропускает смещение стандартного / летнего времени ...
Согласно бизнес-логике c, пользователь ограничен в выборе даты с интервалом: минимальная дата равна текущей дате - 6 месяцев, максимальная = текущая дата + 2 месяца
Мы получаем UT C дату от API в формате ISO 8601 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
и сохраняем в том же формате.
Например, : Значение даты по умолчанию: 2020-01-01T00:00:00.000Z
(смещение часового пояса равно +02: 00)
Проблема начинается, когда пользователь меняет Стандартное время ('2020-01-01.000Z' +02: 00) до Летнее время ('2019-08-18.000Z' +03: 00)
UT C дата отображается в скобках [] (когда дата будет сериализована, ее называют Date.toJson() => Date.toISOString()
).
minDate: ["2019-08-18T00:00:00.000Z"] Sun Aug 18 2019 03:00:00 GMT+0300 (Eastern European Summer Time)
maxDate: ["2020-04-18T23:59:59.000Z"] Sat Apr 18 2020 03:00:00 GMT+0300 (Eastern European Summer Time)
Значение даты:
["2020-01-01T00:00:00.000Z"] Wed Jan 01 2020 02:00:00 GMT+0200 (Eastern European Standard Time)
^^ correct time shift by default
После изменения:
["2019-08-17T23:00:00.000Z"] Sun Aug 18 2019 02:00:00 GMT+0300 (Eastern European Summer Time)
^^ switch day(should be 18.08.2019)^^ - incorrect timeshift, should be 03:00:00 (equals to GMT+0300)
Результат: 2019-08-17T23:00:00.000Z
меньше 2019-08-18T00:00:00.000Z
(minDate)
PS: в этом случае указатель даты используется как часть ve form (formControl), но когда он используется как элемент управления формы templateDriven - результат тот же