我正在处理Javascript日期,我有一个日期,其格式为20 Jun 13
,我
需要将其转换为Date
对象,我使用Date.parse()
返回1 June 2013
。
var frmDt = '20 Jun 13';
alert(Date.parse(frmDt));
哪个是解决方案?
答案 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。