【问题标题】:Month not correct when geting UTC month [duplicate]获取UTC月份时月份不正确[重复]
【发布时间】:2020-09-22 22:51:29
【问题描述】:

我正在遵循这些指示https://stackoverflow.com/a/15012173/3808307

但我真的不明白。现在是我所在时区和 UTC 的 6 月 4 日

我在做timeRef.current = new Date()

然后

console.log(timeRef.current.getUTCFullYear()) // returns 2020
console.log(timeRef.current.getUTCMonth()) // returns 5

为什么我是第 5 个月?如何在 UTC 中明确获得 YYYYMMDD-HHMMSS.milliseconds?

我不想在例如 2 月 29 日时出现错误,例如这里 Javascript date - setting UTC month

我需要一种精确的转换方式

谢谢

【问题讨论】:

  • 月份索引为零,因此 5 是六月。这是一种奇怪的格式,但您可以通过new Date().toISOString().replace(/[^\d\.]/g,'').replace(/(^\d{8})/,'$1-') 获得它,请参阅How to format a JavaScript date
  • @RobG 我想我会用这个

标签: javascript datetime


【解决方案1】:

getUTCMonth() 根据世界时返回指定日期的月份,作为从零开始的值(其中零表示一年中的第一个月)

【讨论】:

    【解决方案2】:

    这就是你需要的!

    var timeRef = new Date()
    
    console.log(timeRef.getUTCFullYear()) // returns 2020
    
    console.log(timeRef.getUTCMonth()+1) // returns 6
    

    【讨论】:

      【解决方案3】:

      月份索引从 0 开始,范围为 0-11,持续 12 个月 - Month in JavaScript

      还要检查 Java 说明 - Month in Java

      【讨论】:

        【解决方案4】:

        如果您可以使用外部库,那么我建议moment.js,就像这里:

        alert("It's the " + moment.utc().format('MM') + ". month of the year " + moment.utc().format('YYYY') + ".") 
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js"></script>

        【讨论】:

        • 嗨@Peter,谢谢,是的,我只是觉得这件小事有点太多了,我正要研究 date-fns
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-29
        • 1970-01-01
        • 2016-11-07
        • 1970-01-01
        • 2023-03-04
        • 2012-03-22
        相关资源
        最近更新 更多