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');