【问题标题】:momentjs format returning date a day off?momentjs 格式返回休息日的日期?
【发布时间】:2018-05-05 05:17:00
【问题描述】:

我正在使用 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 日。 有谁知道为什么会这样?谢谢。

【问题讨论】:

  • 你能显示设置日期的代码吗?或者将日期输出为自纪元以来的毫秒数,以确认关闭的是输出而不是输入?
  • 听起来像是一个模棱两可的标准问题......晚上 11:59 就像说 23:59。加上 5 分钟,您将得到 12:04am(也称为 00:04am),这就像说 24:04(也称为 00:04)我不知道是否清楚:/

标签: javascript momentjs


【解决方案1】:

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

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

始终传递格式作为预防措施。遇到您的问题,要正确显示日期,您需要使用Do 说明符,而不是do。前者适用于Day of Month,后者适用于Day of Week

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>

【讨论】:

  • 太棒了,谢谢。虽然我没有在控制台中收到任何警告。但是用Do 替换do 是问题所在。谢谢!
  • @picklechips -- 那么也许你使用的是旧版本的 MomentJS。在 MomentJS 的网站上试试你的代码,你就知道了。
猜你喜欢
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多