Javascript – 获取上个月的日期

如果我有一个返回日期的变量,格式为dd MMM yyyy,那么2014年8月28日,我怎样才能得到上个月的日期。

我可以通过以下方式修改月份:

$scope.DateMapping = function (months) { var myVariable = "28 Aug 2014" var makeDate = new Date(myVariable); prev = new Date(makeDate.getFullYear(), makeDate.getMonth()+1, 1); }); 

基本上,这是在本月增加一个..但我怎么能解释多年,所以如果当前日期是2014年12月12日,那么之前的日期是2013年1月12日?

我的应用程序使用AngularJS可以使用filter。

更新:

  var myVariable = "28 Aug 2014" var makeDate = new Date(myVariable); var prev = new Date(makeDate.getFullYear(), makeDate.getMonth()+1, makeDate.getMonth()); console.log(myVariable) console.log(makeDate) console.log(prev) Output: 28 Aug 2014 Thu Aug 28 2014 00:00:00 GMT+0100 (GMT Standard Time) Mon Sep 01 2014 00:00:00 GMT+0100 (GMT Standard Time) 

虽然月份增加了,但是这一天显示为01而不是28?

 var myVariable = "28 Aug 2014" var makeDate = new Date(myVariable); makeDate = new Date(makeDate.setMonth(makeDate.getMonth() - 1)); 

更新:

更短的版本:

 var myVariable = "28 Aug 2014" var makeDate = new Date(myVariable); console.log('Original date: ', makeDate.toString()); makeDate.setMonth(makeDate.getMonth() - 1); console.log('After subtracting a month: ', makeDate.toString()); 

只需从月份参数中减去月数,如果值为负值则不用担心。 它将被正确处理。

 new Date(2014, 0, 1) // 1st Jan 2014 new Date(2014, -1, 1) // 1st Dec 2013 

对于所有与日期相关的活动,我建议使用moment.js库,当您使用AngularJS时,有一个库: https : //github.com/urish/angular-moment 。

看看moment.js文档,你会发现它可以更容易地在JavaScript中操作日期: http : //momentjs.com/docs/#/get-set/month/

您将能够轻松解决您面临的问题,例如:

 var now = moment('01/01/2014').subtract(1, 'months').format('DD/MM/YYYY'); 

现在将等于2013年12月1日。

希望这可以帮助!

你可以使用moment.js减法函数 。

 var day = moment("2014-08-28"); day.subtract(1, 'months');