代码之家  ›  专栏  ›  技术社区  ›  Suhail Gupta

unix时间戳和ISO时间之间的关系。为什么他们不平等?

  •  1
  • Suhail Gupta  · 技术社区  · 8 年前

    我正在尝试获取的时间戳 January 1, 2018

    moment("01-01-2018","MM-DD-YYYY").unix()
    

    从上面的陈述中可以看出 1514745000 . 但当我试图将其转换为 ISOString 作为:

    moment.unix(1514745000).toISOString()
    

    具体表现为: 2017-12-31T18:30:00.000Z

    为什么会这样?为什么不等于 2018-01-01T00:00:00.000Z

    1 回复  |  直到 8 年前
        1
  •  3
  •   VincenzoC    8 年前

    默认情况下,力矩以本地时间进行分析和显示。

    默认情况下,“时刻”使用本地时间,而 toISOString 输出为UTC:

    请注意 .toISOString() 返回UTC时间戳,即使所讨论的时刻处于本地模式。

    如果要分析 "01-01-2018" 作为UTC使用 moment.utc .

    下面的示例显示了本地模式和UTC模式下解析的输出差异:

    // Local 01-01-2018 : 1514761200 (UTC+01:00)
    console.log( moment("01-01-2018","MM-DD-YYYY").unix() )
    // UTC 01-01-2018: 1514764800
    console.log( moment.utc("01-01-2018","MM-DD-YYYY").unix() )
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

    您可以在 Local vs UTC vs Offset 指导

    推荐文章