Я слежу за https://devhints.io/wip/intl-datetime
У меня тест, где:
const text = Utils.dateToText('2019-05-18T16:00:00Z', 'en-GB')
expect(text).to.equal('Saturday, May 18, 2019, 16:00')
и функция:
dateToText(dateTime: string, lang: string[5]): string {
const date = new Date(dateTime)
let format = {
timeZone: 'Europe/London',
day: '2-digit',
month: 'long',
year: 'numeric',
weekday: 'long',
hour: '2-digit',
minute: '2-digit',
hour12: false
}
return new Intl.DateTimeFormat(lang, format).format(date)
}
Сбой теста:
AssertionError: ожидается 'Суббота, 18 мая 2019 года, 17:00 вечера' равно 'Суббота, 18 мая 2019 года, 16:00 вечера * (+ ожидается- фактическое)
-Saturday, May 18, 2019, 17:00
+Saturday, May 18, 2019, 16:00
Таким образом, согласно спецификации https://en.wikipedia.org/wiki/ISO_8601 Дата, Z
является символом Зулу, который является часовым поясом Гринвича.Тогда я ожидал бы, что 2019-05-18T16:00:00Z
- это все еще 4 вечера (16:00) для Europe/London
.Важно, что я передаю дату именно в формате ISO.
Когда я удаляю Z
с конца даты (что разрешено спецификацией ISO), я получаю правильный результат (16:00).Тем не менее, я хотел бы сохранить индикатор времени Zulu
, поскольку именно так в моей базе данных хранится DateTime.
На моей локальной машине я нахожусь в часовом поясе Европы / Лондона.На моей другой машине тест проходит правильно, однако на Gitlab CI выдает ошибку.Это явно связано с часовыми поясами ...
Есть ли что-нибудь еще, что может объяснить, почему я получаю это несоответствие или что-то, что я пропустил?