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

momentjs格式返回休息日?

  •  1
  • picklechips  · 技术社区  · 6 年前

    我正在使用momentjs设置日期格式。然而,它显示的是休息一天的日期,我不知道为什么。下面是我使用的代码:

    moment(date).format('MMMM do YYYY, h:mma')

    哪里 date = Sat May 05 2018 00:26:53 GMT-0400 (Eastern Daylight Time)

    然而结果是 May 6th 2018, 12:26am -显示5月6日而不是5月5日。 有人知道为什么会这样吗?谢谢

    1 回复  |  直到 6 年前
        1
  •  4
  •   31piy    6 年前

    您在传递非ISO字符串时没有指定格式,这将导致控制台上出现警告,并可能显示错误的日期。

    弃用警告:提供的值不是可识别的RFC2822或ISO格式。moment构造回退到js Date(),这在所有浏览器和版本中都不可靠。不鼓励使用非RFC2822/ISO日期格式,并将在即将发布的主要版本中删除。请参阅 http://momentjs.com/guides/#/warnings/js-date/ 了解更多信息。

    始终通过格式作为预防措施。针对您的问题,要正确显示日期,您需要使用 Do 说明符,而不是 do .前者用于 日期 但后者是 星期中的一天

    var date = moment('Sat May 05 2018 00:26:53 GMT-0400 (Eastern Daylight Time)', 'ddd MMM DD YYYY HH:mm:ss');
    console.log(date.format('MMMM Do YYYY, h:mma'))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>