使用dateFormat String的javascript日期格式

时间:2013-06-27 07:04:14

标签: javascript

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

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

哪个是解决方案?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我已将我的评论中发布的代码转换为函数,使jan,feb,mar case insensitie和日月之间的分隔符可以是任何字符(只要有一个)。所以任何格式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"));

答案 2 :(得分:0)

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