我有一个字符串,其日期格式如下:YYYYMMDDHHMMSS。我想知道如何使用JavaScript将其转换为JavaScript Date对象。
提前致谢!
答案 0 :(得分:8)
这是一个古怪的方法来做到这一点:
var date = new Date(myStr.replace(
/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/,
'$4:$5:$6 $2/$3/$1'
));
零外部库,一行代码; - )
原始方法说明:
// EDIT: this doesn't work! see below.
var date = Date.apply(
null,
myStr.match(/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/).slice(1)
);
match()
函数(在slice()
d包含右侧之后)将返回一个包含年,月,日,小时,分钟和秒的数组。这恰好是Date构造函数的正确顺序。 Function.apply
是一种使用数组中的参数调用函数的方法,因此我使用了Date.apply(<that array>)
。
例如:
var foo = function(a, b, c) { };
// the following two snippets are functionally equivalent
foo('A', 'B', 'C')
var arr = ['A', 'B', 'C'];
foo.apply(null, arr);
我刚才意识到这个函数实际上并不起作用,因为javascript月份是零索引的。你仍然可以用类似的方法来做,但是有一个中间步骤,在将数据传递给构造函数之前从数组中减去一个。我把它留在了这里,因为它在评论中被问到了。
其他选项按预期工作。
答案 1 :(得分:4)
原始版本:
new Date(foo.slice(0, 4), foo.slice(4, 6) - 1, foo.slice(6, 8),
foo.slice(8, 10), foo.slice(10, 12), foo.slice(12, 14))
不需要将字符串显式转换为数字:Date()
函数将为您执行此操作。
答案 2 :(得分:3)
我发现DateJS是与JavaScript中转换,解析和使用日期有关的最佳库。如果您需要更频繁地进行这种转换,那么您应该考虑在应用程序中使用它:
Date.parseExact("20091202051200", "YYYYMMDDHHMMSS");
答案 3 :(得分:1)
如果你可以使用jQuery,jQuery.ui.datepicker有一个实用程序function。
答案 4 :(得分:0)
此库中的日期函数可以提供帮助:http://javascripttoolbox.com/lib/date/,它是免费的,使用起来非常简单。
如果您想自己动手,我建议查找javascript正则表达式,因为我猜这是达到最佳效果的方法
答案 5 :(得分:0)
您的字符串中没有时区信息。 它很可能是GMT,所以应该考虑到这一点 当你做日期。您可以使用简单的JavaScript方法轻松完成转换。
Date.Brit= (function(){
return Date.parse('2/6/2009')> Date.parse('6/2/2009');
})()
var s= "20091202093000"
var D= s.match(/(\d{2})/g);
if(Date.Brit){
D.splice(2, 2, D[3],D[2]);
}
var day= new Date(Date.parse(D[2]+'/'+D[3]+'/'+
D[0]+D[1]+' '+D.splice(4).join(':')+' GMT'));
day.toUTCString()+'\n'+day
/* returned value: (String)
Wed, 02 Dec 2009 09:30:00 GMT
Wed Dec 02 2009 04:30:00 GMT-0500 (Eastern Standard Time)
*/