Я обнаружил, что предложение dateStyle и timeStyle для Intl.DateTimeFormat говорит:
[[HourCycle]] - это строковое значение, указывающее, следует ли использовать 12-часовой формат ("h11"
, "h12"
) или 24-часовой формат ("h23"
, "h24"
). "h11"
и "h23"
начинаются с часа 0 и доходят до 11 и 23 соответственно. "h12"
и "h24"
начинаются с часа 1 и доходят до 12 и 24. [[HourCycle]] используется, только когда [[Hour]] не undefined .
Английский или американский стиль может предпочесть h12
:
› new Date(2019,4,1,12,0,0).toLocaleString('en-US', { hourCycle: 'h12' })
‹ "5/1/2019, 12:00:00 PM"
› new Date(2019,4,1,12,0,0).toLocaleString('en-US', { hourCycle: 'h11' })
‹ "5/1/2019, 0:00:00 PM"
h24
следует использовать с осторожностью. Было бы неплохо, если бы часть даты была значением за день до этого.
› new Date(2019,4,1,0,59,59).toLocaleString('ja-JP', { hourCycle: 'h23' })
‹ "2019/5/1 0:59:59"
› new Date(2019,4,1,0,59,59).toLocaleString('ja-JP', { hourCycle: 'h24' })
‹ "2019/5/1 24:59:59"
Таблица совместимости в MDN говорит, что Firefox 58 и Edge поддерживают это.