当前位置: 首页 > 面试题库 >

如何在moment.js中从现在开始正确地添加1个月到当前日期

岳彬炳
2023-03-14
问题内容

我阅读了moment.js的文档,如果您想从当前日期开始增加1个月,请使用此代码

var moment = require('moment');
var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY');

但是现在的问题是,它没有正确正确地添加日期,例如,假设当前日期为2015年10月31日,请在代码中说明

var currentDate = moment().format('DD-MM-YYYY');
var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY');

console.log(currentDate) //  Will result --> 31/10/2015
console.log(futureMonth) //  Will result --> 30/11/2015

如果您查看当前的日历时间,则该时间31/10/2015应为1个月1/12/2015

谁能给我一些关于如何解决此问题的意见。

谢谢


问题答案:
var currentDate = moment('2015-10-30');
var futureMonth = moment(currentDate).add(1, 'M');
var futureMonthEnd = moment(futureMonth).endOf('month');

if(currentDate.date() != futureMonth.date() && futureMonth.isSame(futureMonthEnd.format('YYYY-MM-DD'))) {
    futureMonth = futureMonth.add(1, 'd');
}

console.log(currentDate);
console.log(futureMonth);

[**DEMO**](http://jsbin.com/butuduhoti/edit?js,console)

编辑

moment.addRealMonth = function addRealMonth(d) {
  var fm = moment(d).add(1, 'M');
  var fmEnd = moment(fm).endOf('month');
  return d.date() != fm.date() && fm.isSame(fmEnd.format('YYYY-MM-DD')) ? fm.add(1, 'd') : fm;  
}

var nextMonth = moment.addRealMonth(moment());

[**DEMO**](https://jsbin.com/deduyoroso/edit?js,console)



 类似资料:
  • 您好,我对java.sql.Date的结果有问题。这是我的代码,从当前日期开始添加1周 如果当前日期是2016-02-27,那么我的MySQL中的结果是2016-03-05。但是,如果我想从当前日期开始添加1个月(对我来说总是31天),请使用此行代码 它应该是2016-03-28,但在我的MySQL中,结果是2016-02-05。任何人都可以帮助我这个结果有什么问题??

  • 问题内容: 我已经看过了,基本上我已经发现Calendar对象可以使用以下类似方法将1个月添加到指定的日期中: 尽管我不喜欢它在日期为30或31时的行为。如果我将1个月添加到01/31/2012,输出将变为02/29/2012。当我再增加1个月时,它将变为03/29/2012。 无论如何,我是否可以强制2012年2月29日自动变为2012年3月1日? 基本上这就是我想发生的事情: 默认日期:01/

  • 这是我的代码,从给定的日期获得天数差异。我需要准确的日子,这里我正确的日子不同是'2',但我得到了1。我在Angular中使用Moment.js进行此操作。这不需要时间。我需要时间来得到结果。我在日历中使用这个代码,所以我需要花时间。

  • 问题内容: 我有一个当前的Date对象,需要使用JavaScript Date对象将其增加一天。我有以下代码: 如何添加一天? 我已将+1添加到,但不会显示“”的“星期日” ,这是我希望发生的情况。 问题答案: 要将一天添加到日期对象:

  • 问题内容: String febSt = “02/01/2014” ; String febEnd = “02/28/2014” ; 上面的代码是我的输入,我需要“ 03/01/2014”和“ 03/31/2014”作为输出。我尝试了更多代码,也使用了日历功能,但没有结果。从该程序中,我需要下个月的开始和结束日期。 我尝试了更多示例输入,如果我将这些日期作为下个月2月返回的输入,将在2月,4月,6

  • 问题内容: 我正在使用以下代码 输出是 添加到 一月 是给 月 月。如果我们在当前日期加上30天,则可能返回正确的输出。但我想显示 2 月。有人可以帮我吗.. 问题答案: 您可以看到+1设置字段添加的日期与您的日期不同(从输出中观察到)。 如果你想几个月,那么使用代码