解析&格式javascript日期:dd M YYYY到YYYY-mm-dd

时间:2015-04-25 20:21:56

标签: javascript date

我的日期如下:

30 Apr 2015

如何解析和显示这样的日期(没有Moment.js)?

2015-04-31 (or YYYY-mm-dd)

4 个答案:

答案 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)

使用moment.js

像这样转换你的日期:

var myDate = moment("30 Apr 15", "DD MMM YY").format("YYYY-MM-DD");
console.log(myDate);
//2015-04-30

DEMO

答案 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