我想从所选日期减去1个月,并以此格式mm/dd/yyyy
self.SelectedDate = "02/22/2018";
var temp = new Date(self.SelectedDate);
temp.setDate(temp.getDate() - 30);
但我得到的结果是Mon Jan 08 2018 00:00:00 GMT+0800 (Malay Peninsula Standard Time)
这只是我程序中的一小部分,因此我不想为此下载库。我正在使用AngularJS,有没有办法在不下载或添加角度过滤器的情况下得到我想要的东西?
答案 0 :(得分:3)
Date
constructor不接受此格式的字符串。
self.SelectedDate = "02/22/2018";
var p = self.SelectedDate.split("/");
var temp = new Date(p[2],p[0]-1,p[1]);
temp.setDate(temp.getDate() - 30);
const pad = n=>("0"+n).slice(-2);
var f = [pad(temp.getMonth()+1),pad(temp.getDate()),temp.getFullYear()].join("/");
console.log(f);
答案 1 :(得分:2)
符合一些评论和答案。我写了一个你可以调用的函数,它会根据你的需要格式化日期。
它接受JS Date作为唯一参数
var formatDate = (date) => {
var month = date.getMonth() + 1
var day = date.getDate()
var year = date.getFullYear()
//Pad the month and/or day with "0" if its not two digits
if(month < 10) month = `0${month}`
if(day < 10) day = `0${day}`
return `${month}/${day}/${year}`
}
答案 2 :(得分:1)
您有时间存储在temp
变量中。
所以,你可以做这样的事情来获得你的格式。
formattedDate = ("0" + (temp.getMonth() + 1)).slice(-2) + "/" + temp.getDate() + "/" + temp.getFullYear();
答案 3 :(得分:0)
日期的构造函数接受:
new Date(year, month [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
关于你的案子:
new Date( year, month, day )
以下功能解决了您的问题:
function formatDate(date) {
let parts = date.split('/');
date = new Date( parts[2], parts[0]-2, parts[1] )
return addZero( date.getMonth() + 1) +
addZero( date.getDate()) + date.getFullYear();
}
function addZero(number) {
return ('0' + number).slice(-2) + '/' ;
}
// test
var dateN = '01/31/2018'
console.log( formatDate(dateN) );