Центрально-европейское стандартное время вместо CET для Date.prototype.toString ()

1

У меня странное поведение с методом toString Date в JavaScript.

Мои коллеги:

const event = new Date('August 19, 1975 23:15:30');
console.log(event.toString());
// expected output: Tue Aug 19 1975 23:15:30 GMT+0200 (CEST)

И я:

const event = new Date('August 19, 1975 23:15:30');
console.log(event.toString());
// expected output: Tue Aug 19 1975 23:15:30 GMT+0200 (Central European Standard Time)

Итак, у меня стандартное время с четкими словами, и я не хочу этого.

  • 0
    Что вы видите, если обе системы также делают console.log(navigator.language) ?
  • 0
    @Pointy У меня есть en-GB и FR-FR
Теги:
date

2 ответа

1

Похоже, вы используете разные браузеры или версии браузера. Вывод Date.prototype.toString в ES2018 не указан полностью. Как вы можете видеть в спецификации о TimeZoneString:

Пусть tzName является строкой, определяемой реализацией, которая является либо пустой строкой, либо строкой-конкатенацией блока кода 0x0020 (SPACE), блока кода 0x0028 (LEFT PARENTHESIS), зависимого от реализации имени часового пояса и блока кода 0x0029 ( ПРАВИЛЬНЫЙ РОДИТЕЛЬ).

Текущие версии Firefox show (CET), Chrome (Central European Standard Time) и Safari (CEST).

  • 0
    Хорошо, это работа. Но мой вопрос не правильно отражает мою ситуацию. Из-за этого у меня несколько неудачных юнит-тестов с Jest. Любая идея?
  • 0
    @mickaelw Я не знаю, что вы тестируете, но вы не должны проверять форматирование даты. Вместо этого проверьте фактическое значение, например, метку времени Unix в миллисекундах.
Показать ещё 1 комментарий
1

Вы можете попробовать toLocaleDateString чтобы получить согласованные результаты. Например: event.toLocaleDateString('en-GB', {timeZoneName:"long",weekday: 'short', year: 'numeric', month: 'short', day: 'numeric', hour:'numeric', minute:'numeric', second: 'numeric'})

  • 0
    Это не обязательно приведет к последовательным результатам. Объект Intl по существу определяет API, не указывая точно, какими должны быть результаты. Не существует стандартов для названий часовых поясов или сокращений, поэтому, скорее всего, будут различия в реализациях.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню