Intl.DateTimeFormat показывает время 24:59 - PullRequest
1 голос
/ 27 марта 2020

Привет всем | просто проверяю, делаю ли я что-то не так. Код ниже дает мне время = 24:59 в Праге (GMT + 1). Использование Chrome.

new Intl.DateTimeFormat(
  'en',
  {
     weekday: 'long',
     month: 'long',
     day: 'numeric',
     hour: 'numeric',
     minute: 'numeric',
     hour12: false
  }
 ).format(new Date('2020-03-11T23:59:00Z')
) 
// "Thursday, March 12, 24:59"

При использовании .getHours () я получу правильное значение 0.

new Date('2020-03-11T23:59:00Z'); // Thu Mar 12 2020 00:59:00 GMT+0100 (Central European Standard Time)
new Date('2020-03-11T23:59:00Z').getHours(); // 0

Спасибо за предложения, я не нашел ни одного связанные с этим вопросы.

Томас

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

Похоже, что эта проблема является настройкой по умолчанию для HourCylce и langauge en, которая, как вы ожидаете, будет h23, но Chrome использует h24. Вы можете исправить это как , описанное toniedzwiedz , или вы можете предоставить подходящий код страны для языкового тега, чтобы HourCylce по умолчанию установил h23, скажем, GB:

let d = new Date(2020,2,1,0,23);
let opts = {hour12:false, hour: 'numeric'};

console.log(d.toLocaleString('en', opts)); // 24 (Chrome), 00 others
console.log(d.toLocaleString('en-GB', opts)); // 00 all
2 голосов
/ 27 марта 2020

Ваш код дает мне "Thursday, March 12, 00:59" в Firefox и "Thursday, March 12, 24:59" в Chrome (80.0.3987.149)

Кажется, открыта ошибка для Chrome 80 https://support.google.com/chrome/thread/29828561?hl=en, открыт с февраля, но мало сказано о том, будет ли это исправлено и как. Рассмотрите возможность голосования.

Согласно опубликованному там комментарию, вы можете обойти эту проблему, заменив свойство hour12 на hourCycle: 'h23'.

new Intl.DateTimeFormat(
  'en',
  {
     weekday: 'long',
     month: 'long',
     day: 'numeric',
     hour: 'numeric',
     minute: 'numeric',
     hourCycle: 'h23'
  }
 ).format(new Date('2020-03-11T23:59:00Z')
)
// "Thursday, March 12, 00:59"

Это, похоже, помогает для меня

...