【问题标题】:Moment.js endOf('month') returning incorrect amount of days for next monthMoment.js endOf('month') 返回下个月的错误天数
【发布时间】:2019-06-13 08:01:14
【问题描述】:

我正在使用 moment.js 库来获取日期。当我将日期设置为月底时,它总是返回该月的 30 日。但它没有考虑到有些月份有 31 天。如何解决?

case 'currentMonth':
        this.dateTo = moment().endOf('month');
        this.dateFrom = moment().startOf('month');
        break;

例如:下个月(7月)的this.dateTo会返回30.07.19,但是这个月有31天。

【问题讨论】:

  • 这个月是六月,只有30天!我当时以为我要疯了!除非我误会,否则您是说它只显示 7 月的 30 天吗?
  • 无论什么月份,它总是显示 30 天。根据 moment.js,每个月只有 30 天。
  • @Messaget jsfiddle.net/15tzp7ud 不,听起来它按预期工作:2019-06-30 2019-06-01 2019-07-31。处理日期对象时要注意时区,如果这是问题的话。
  • 7 月 30 日你要写什么代码?如果您在问题中表明这一点,我们可以看到正在发生的事情并提供帮助。
  • 每次调用moment() 时,它都会根据当前时间创建一个实例。所以你上面的代码总是在六月返回 6 月 30 日。

标签: javascript angular momentjs


【解决方案1】:

moment() 的基本用法将默认为当前月份。为了获得下个月(七月),您需要在日期上添加一个月。

var date = moment().add('months', 1).endOf('month');

【讨论】:

  • 谢谢!我的错误是首先我添加了 endOf('month') 并且仅在添加之后才添加('months', 1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2018-07-04
  • 2013-11-08
  • 1970-01-01
相关资源
最近更新 更多