Ngx- bootstrap datepicker Standard / Летняя временная проблема смещения проблемы - PullRequest
0 голосов
/ 18 февраля 2020

Мы используем 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 - результат тот же

...