我有一个表示日期的字符串,格式如下:
Jun 29, 2019 12:00:00 AM
我要设置以下日期格式:
2019-06-29
有没有不用任何外部库的方法?
我尝试了以下操作,但它在Chrome浏览器中工作正常,但在Edge中无法正常工作:
var stringDate = 'Jun 29, 2019 12:00:00 AM';
var date = new Date(stringDate).toISOString().slice(0,10);
答案 0 :(得分:2)
使用像https://momentjs.com/这样的外部库当然是最简单的选择。
但是,如果日期始终采用您说的格式,则可能只需要一点正则表达式和javascript。
例如
var resplitdate = /^(\w{3}) (\w{1,2}), (\w{4})/;
var months = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(",");
function pz(s, size) {
var r = s.toString();
while (r.length < size) r = '0' + r;
return r;
}
function convertDate(d) {
var splits = resplitdate.exec(d);
return splits[3] + '-' +
pz(months.indexOf(splits[1]) + 1, 2) + "-" +
pz(splits[2], 2);
}
var stringDate = 'Jun 29, 2019 12:00:00 AM';
console.log(stringDate, " = ", convertDate(stringDate));
答案 1 :(得分:-2)
您可以使用getFullYear()
,getDay()
和getDate()
来获取值。然后,您可以使用padStart()
用零填充每个项目的开头。
var date = new Date('Jun 29, 2019 12:00:00 AM');
console.log(`${date.getFullYear()}-${String(date.getDay()).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`)
答案 2 :(得分:-2)
使用javascript(仅)格式化日期的简单方法如下-
var stringDate = 'Jun 29, 2019 12:00:00 AM';
function appendLeadingZeroes(n){
if(n <= 9){
return "0" + n;
}
return n
}
let current_datetime = new Date(stringDate);
let formatted_date = current_datetime.getFullYear() + "-" + appendLeadingZeroes(current_datetime.getMonth() + 1) + "-" + appendLeadingZeroes(current_datetime.getDate())
console.log(formatted_date)
答案 3 :(得分:-5)
const yourDate = 'Jun 29, 2019 12:00:00 AM';
const convertDate = (data) => {
const formattedDate = new Date(data);
const date = formattedDate.getDate();
const month = formattedDate.getMonth()+1;
const year = formattedDate.getFullYear();
return `${year}-${month}-${date}`;
}
convertDate(yourDate);