我需要将包含多个日期的字符串转换为数组。 只要字符串包含数字,这就完美无缺。 包含日期信息的字符串如下所示:
Wed Nov 01 2017 13:06:56 GMT+0100 (CET),Wed Nov 01 2017 13:07:10 GMT+0100 (CET),Wed Nov 01 2017 13:07:12 GMT+0100 (CET),Wed Nov 01 2017 13:07:13 GMT+0100 (CET),Wed Nov 01 2017 13:07:15 GMT+0100 (CET),Wed Nov 01 2017 13:07:16 GMT+0100 (CET)
我的代码如下:
var times = string.split(",").map(Number);
console.log(times[0]);
不幸的是,这导致:
NaN
我无法解释为什么它不起作用。即使我替换
","
通过
"GMT+"
它仍然不起作用。感谢您的帮助!
答案 0 :(得分:2)
拆分字符串正常工作。
问题是通过调用.map(Number)
,您试图将数组的每个元素传递给Number构造函数。这会返回NaN,因为字符串不能直接转换为数字。
例如:
new Number('Wed Nov 01 2017 13:06:56 GMT+0100 (CET)'); // NaN
你可能想要的是.map(Date.parse)
,因为Date.parse函数可以处理这种格式的字符串。结果将是"数字,表示自1970年1月1日00:00:00 UTC"以来经过的毫秒数。 (MDN)
答案 1 :(得分:1)
您实际上 根本不需要使用map()
;只需使用
var times = string.split(",");
会为您提供times
数组中分割的时间,您可以使用times[0]
访问该数据:
var string = 'Wed Nov 01 2017 13:06:56 GMT+0100 (CET),Wed Nov 01 2017 13:07:10 GMT+0100 (CET),Wed Nov 01 2017 13:07:12 GMT+0100 (CET),Wed Nov 01 2017 13:07:13 GMT+0100 (CET),Wed Nov 01 2017 13:07:15 GMT+0100 (CET),Wed Nov 01 2017 13:07:16 GMT+0100 (CET)';
var times = string.split(",");
console.log(times[0]);

答案 2 :(得分:0)
我猜你需要这个:
<强> ES6 强>
let times = string.split(',').map(d => new Date(d));
<强> ES5 强>
var times = string.split(',').map(function (d) { return new Date(d)});