我的日期如下:
30 Apr 2015
如何解析和显示这样的日期(没有Moment.js)?
2015-04-31 (or YYYY-mm-dd)
答案 0 :(得分:4)
最简单的方法可能是使用moment.js。
如果您更喜欢在vanilla JS中使用自己的解决方案,这将有效:
var padZero = function (integer) {
return integer < 10 ? '0' + integer : '' + integer
};
var myDate = new Date('30 Apr 2015');
var myDateString = myDate.getFullYear() + '-' +
(padZero(myDate.getMonth()+1)) + '-' +
(padZero(myDate.getDate()));
console.log(myDateString); // 2015-04-30
答案 1 :(得分:2)
解析部分很简单......虽然它会在你的例子中失败,因为4月份没有第31天:)
var x = new Date("30 Apr 2015");
格式化日期有点棘手。你有几个选择。 Date
本身支持多种输出方法(.toDateString()
,.toLocaleDateString()
等),但它们都不匹配您给出的格式。但是,它允许您单独选择日期的日,月和年值。因此,您可以手动组装它们:
console.log(x.getFullYear() + '-' + (x.getMonth()+1) + '-' + x.getDate())
请注意.getMonth()
返回一个从0开始的索引并且没有填充到两位数,而.getDay()
获取星期几的索引,而不是一天的索引。月(.getDate()
)。
但是,您最好选择moment.js,它提供了通过任意格式字符串格式化的功能,类似于您对其他语言的期望。除非你出于某种原因无法引入另一个库,否则我觉得这是一个问题类别,使用已经存在的非常好的解决方案是有道理的。
答案 2 :(得分:0)
像这样转换你的日期:
var myDate = moment("30 Apr 15", "DD MMM YY").format("YYYY-MM-DD");
console.log(myDate);
//2015-04-30
答案 3 :(得分:0)
你可以用
轻松完成//define Date
var xdate = "31 Apr 2015";
// simple array to define months from Jan to Dec [01 : 12]
var months = {
Jan:'01',
Feb:'02',
Mar:'03',
Apr:'04',
May:'05'
};
// split our Date and rearrange as yyyy-mm-dd
var reform = xdate.split(' ')[2]+'-'+months.Apr+'-'+xdate.split(' ')[0];
alert(reform);// return 2015-04-31