1

我正在处理 Javascript 日期,我有一个日期格式为20 Jun 13,我需要将其转换为一个Date对象,我使用Date.parse()它返回1 June 2013

var frmDt = '20 Jun 13';
alert(Date.parse(frmDt));    

哪个是解决方案?

4

3 回答 3

1

我发现使用momentJs使 JavaScript 中的日期处理变得非常容易,它允许您以moment非常自由的方式构造实际包装原生 javascript Date 对象的对象,传入许多不同格式的字符串,并且实际上能够获取日期对象,在一种比Date.parse().

您还可以传入日期格式字符串,因此您的情况类似于moment('20 Jun 13', 'DD MMM YY').

于 2013-06-27T07:11:12.910 回答
0

d3.js 具有非常强大的解析和格式化日期的功能。请参阅https://github.com/mbostock/d3/wiki/Time-Formatting

于 2013-06-27T07:59:09.270 回答
0

我已将评论中发布的代码转换为一个函数,使 jan、feb、mar 不区分大小写,并且日月年之间的分隔符可以是任何字符(只要有一个字符)。所以任何格式 dd mmm yy 或 dd/mmm/yy 或 d mmm yy 都可以:

function toDate(str){
    var months={
     "JAN":1,
     "FEB":2,
     //... other months
     "JUN":6,
     //... other months
     "DEC":12
    }
    var r=/^(\d{1,2}).(\w{3}).(\d{2}$)/;
    if(r.test(str)===false){
      throw new Error("Invalid date string:"+str);
    }
    var replaceFunction=function(){
     var years=parseInt(arguments[3],10);
     var m=months[arguments[2].toUpperCase()];
     if(typeof m==="undefined"){
       throw new Error("Invalid month name:"+arguments[2]);
     }
     var days=arguments[1]
     m=(m<9)?"0"+m:m;
     days=(days.length===1)?days="0"+days:days;
     years=(years>50)?years="19"+years:"20"+years;
     return m+"/"+days+"/"+years;
    };
    return new Date(str.replace(r,replaceFunction));
}
console.log(toDate("20 Jun 13"));
于 2013-06-27T07:22:59.747 回答