我有一个javascript字符串,我将其拆分为Date对象的数字,然后使用map转换为数字。在解析和映射时,日期不喜欢格式。
这不起作用:
var timeString = '2016-01-01T17:44:32';
var dateTime = new Date( timeString.split(/T|:|-/).map(Number) );
这不起作用:
var timeString = '2016-01-01T17:44:32';
var x = timeString.split(/T|:|-/).map(Number);
var dateTime = new Date( x );
但这仍然有效:
var timeString = '2016-01-01T17:44:32';
var x = timeString.split(/T|:|-/).map(Number);
var dateTime = new Date( x[0], x[1], x[2], x[3], x[4], x[5] );
我猜测传递给函数或构造函数的数组在JavaScript中没有被展平。有什么我缺少的或第一个例子接近工作?第三个有效的解决方案就是丑陋。
答案 0 :(得分:0)
JavaScript Date构造函数接受以下之一:
Date.now()
就是一个很好的例子)year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]
在您的情况下,不需要操纵字符串。只需使用下面的代码块就可以解决问题:
var timeString = '2016-01-01T17:44:32';
var dateTime = new Date( timeString );
console.log(dateTime.getTime()); // 1451670272000
答案 1 :(得分:0)
很简单,要将任何Array元素作为参数传递给构造函数,您只需要生成一个包含所需数组的新构造函数。
试试这个:
var timeString = '2016-01-01T17:44:32';
// now generate new Date Constructor loaded with you array arguments
var arrComponents = timeString.split(/T|:|-/).map(Number);
var newDateConstuctor = Date.bind.apply(Date,arrComponents);
var dateTime = new newDateConstuctor();