代码之家  ›  专栏  ›  技术社区  ›  Mehdi

Javascript Date()返回24小时[关闭]

  •  1
  • Mehdi  · 技术社区  · 2 年前

    在我的时区,现在是(12:40 AM/00:40)。

    Date()给我24小时以上的时间,就像我的输出一样 7/8/2022, 24:40:00 ,我如何修复?

    const dateTimezone = new Date("2022-07-08T00:40:00").toLocaleString('en-US', {
        hour12: false
    })
      
    console.log(dateTimezone)
    1 回复  |  直到 2 年前
        1
  •  4
  •   skara9    2 年前

    这个 ECMA spec 定义 hour12 在两个值之间切换小时周期的选项 h11 h23 h12 h24 .

    这是由Chromium的V8实现的,但不是SpiderMonkey和JavascriptCore。因此,在大多数主要的非Chromium浏览器中,问题代码段的输出将不可再现。

    请参阅 open issue on ECMA402 关于这个话题。


    自的默认小时周期 en-US h12 ,如果在V8上运行, hour12: false ,将切换到 h24 .

    为了在运行时一致地生成所需的输出,可以手动设置小时周期选项以使用 h23 在里面 .toLocaleString .

    下面的示例应始终显示 00 对于所有运行时的小时数:

    const dateTimezone = new Date("2022-07-08T00:40:00").toLocaleString('en-US', {
        hourCycle: 'h23'
    })
      
    console.log(dateTimezone)