如果我有一个返回日期的变量,格式为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可以使用过滤器。
更新:
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?
答案 0 :(得分:9)
只需从月份参数中减去月数,如果值为负,请不要担心。它将被正确处理。
new Date(2014, 0, 1) // 1st Jan 2014
new Date(2014, -1, 1) // 1st Dec 2013
答案 1 :(得分:6)
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());
答案 2 :(得分:4)
对于所有与日期相关的活动,我建议使用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');
现在将等于01/12/2013。
希望这有帮助!
答案 3 :(得分:2)
您可以使用moment.js subtract function。
var day = moment("2014-08-28");
day.subtract(1, 'months');
答案 4 :(得分:0)
有办法可以得到以前的几个月。
const formatter = new Intl.DateTimeFormat("default", {
month: "long"
});
const date = new Date();
let number = 1;
let prevMonth = formatter.format(
new Date(date.getFullYear(), date.getMonth() - `${number}`)
);
答案 5 :(得分:0)
这将返回所有前几个月以及该月的开始和结束
var now = new Date();
var start_month = new Date();
start_month.setMonth(now.getMonth() - 5);
for (var d = start_month; d <= now; d.setMonth(d.getMonth() + 1)) {
var firstDay = new Date(d.getFullYear(), d.getMonth(), 1);
var x = new Date(firstDay);
x.setDate(0);
x.setDate(1);
var date = new Date(x);
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
var startDate = `${firstDay.getFullYear()}-${firstDay.getMonth() + 1}-${firstDay.getDate()}`;
var endDate = `${lastDay.getFullYear()}-${lastDay.getMonth() + 1}-${lastDay.getDate()}`;
console.log(startDate)
console.log(endDate)
}