我正在处理 Javascript 日期,我有一个日期格式为20 Jun 13
,我需要将其转换为一个Date
对象,我使用Date.parse()
它返回1 June 2013
。
var frmDt = '20 Jun 13';
alert(Date.parse(frmDt));
哪个是解决方案?
我正在处理 Javascript 日期,我有一个日期格式为20 Jun 13
,我需要将其转换为一个Date
对象,我使用Date.parse()
它返回1 June 2013
。
var frmDt = '20 Jun 13';
alert(Date.parse(frmDt));
哪个是解决方案?
我发现使用momentJs使 JavaScript 中的日期处理变得非常容易,它允许您以moment
非常自由的方式构造实际包装原生 javascript Date 对象的对象,传入许多不同格式的字符串,并且实际上能够获取日期对象,在一种比Date.parse()
.
您还可以传入日期格式字符串,因此您的情况类似于moment('20 Jun 13', 'DD MMM YY')
.
d3.js 具有非常强大的解析和格式化日期的功能。请参阅https://github.com/mbostock/d3/wiki/Time-Formatting。
我已将评论中发布的代码转换为一个函数,使 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"));