Joh*_*nes 4 javascript datetime date
我有一个字符串,其日期格式如下:YYYYMMDDHHMMSS.我想知道如何使用JavaScript将其转换为JavaScript Date对象.
提前致谢!
nic*_*ckf 10
这是一个古怪的方法来做到这一点:
var date = new Date(myStr.replace(
/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/,
'$4:$5:$6 $2/$3/$1'
));
Run Code Online (Sandbox Code Playgroud)
零外部库,一行代码;-)
原方法说明:
// 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)
);
Run Code Online (Sandbox Code Playgroud)
该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);
Run Code Online (Sandbox Code Playgroud)
我刚刚意识到这个函数实际上并不起作用,因为javascript月份是零索引的.你仍然可以用类似的方法来做,但是有一个中间步骤,在将数据传递给构造函数之前从数组中减去一个.我把它留在了这里,因为它在评论中被问到了.
另一种选择按预期工作.
原始版本:
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))
Run Code Online (Sandbox Code Playgroud)
字符串到数字的显式转换是不必要的:Date()函数会为你做这件事。
| 归档时间: |
|
| 查看次数: |
10528 次 |
| 最近记录: |