JavaScript日期时间解析

JavaScript日期时间解析,javascript,parsing,datetime,format,datetime-format,Javascript,Parsing,Datetime,Format,Datetime Format,可能重复: 我有一个json响应,它包含一个类似hashmap的函数 {"map":{"2012-10-10 03:47:00.0":23.400000000000002,"2012-10-10 03:52:00.0":23.3,"2012-10-10 03:57:00.0":23.3,"2012-10-10 04:02:00.0":23.3,"2012-10-10 04:07:00.0":23.200000000000003,"2012-10-10 04:13:00.0":23.1,"201

可能重复:

我有一个json响应,它包含一个类似hashmap的函数

{"map":{"2012-10-10 03:47:00.0":23.400000000000002,"2012-10-10 03:52:00.0":23.3,"2012-10-10 03:57:00.0":23.3,"2012-10-10 04:02:00.0":23.3,"2012-10-10 04:07:00.0":23.200000000000003,"2012-10-10 04:13:00.0":23.1,"2012-10-10 04:18:00.0":23.1,"2012-10-10 04:23:00.0":23.0,"2012-10-10 04:28:00.0":23.0,"2012-10-10 04:33:00.0":23.0,"2012-10-10 04:38:00.0":22.900000000000002,"2012-10-10 04:43:00.0":22.8,"2012-10-10 04:48:00.0":22.8,"2012-10-10 04:53:00.0":22.700000000000003,"2012-10-10 04:58:00.0":22.6,"2012-10-10 05:03:00.0":22.6,"2012-10-10 05:08:00.0":22.5,"2012-10-10 05:13:00.0":22.5,"2012-10-10 05:18:00.0":22.5,"2012-10-10 05:23:00.0":22.400000000000002}}
我想格式化json的datetime部分,就像

年月日HH:mm:ss

假设我把所有成对元素都放在这里

var myArr = [["2012-10-10 03:47:00.0", 23.400000000000002], ["2012-10-10 03:52:00.0", 23.3], ....];
然后,我尝试像下面这样解析datetime部分,在控制台上得到Date{Invalid Date}

new Date(myArr[0][0]);
如何格式化此类型的日期时间。

请尝试以下操作:

new Date(Date.parse(myArr[0][0]));

使用。方法将字符串解析为自1970年1月1日00:00:00 UTC以来的毫秒数。以毫秒为单位,再次调用该方法,将该时间转换为日期对象

编辑

在这种情况下,这可能有点难看,但Firefox似乎在
-
s和
00.0
方面存在问题

var myArr = [["2012-10-10 03:47:00.0", 23.400000000000002], ["2012-10-10 03:52:00.0", 23.3]];

var date = convertDateTime(myArr[0][0]);
console.log(date);

function convertDateTime(dateTime){
    dateTime = myArr[0][0].split(" ");

    var date = dateTime[0].split("-");
    var yyyy = date[0];
    var mm = date[1]-1;
    var dd = date[2];

    var time = dateTime[1].split(":");
    var h = time[0];
    var m = time[1];
    var s = parseInt(time[2]); //get rid of that 00.0;

    return new Date(yyyy,mm,dd,h,m,s);
}

我确实从
新日期(myArr[0][0])
中获得了一个有效日期。实际上,当我使用
console.log(newdate(myArr[0][0])时,它不是一个异常其输出<代码>日期{Invalid Date}
在您的示例中仍然有无效的日期错误它在firefox控制台上给出错误:/Chrome呈现良好。
新日期
接受<代码>日期。解析字符串,如您链接到的MDN文章中所述。因此,这个答案并不能解决问题。@vtokmak,更新后的示例应该适合您,我建议您创建一个带有字符串(
“2012-10-10 03:47:00.0”
)的函数,这样您就可以循环结果集并调用该函数。@Chase,非常感谢,它工作得很好!非常感谢,它也非常有效。支持Facebook日期的细微变化:str.match(/(\d+)-(\d+)-(\d+)[\sT]+(\d+):(\d+):(\d+):(\d+)(\d+)/)为什么
m[6]*100
?m[6]仅为秒,应在不使用乘法器的情况下传递给日期构造函数。
function dateFromString(str) {
  var m = str.match(/(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)\.(\d+)/);
  return new Date(+m[1], +m[2] - 1, +m[3], +m[4], +m[5], +m[6] * 100);
}

dateFromString(myArr[0][0]); // Sat Oct 10 2012 03:47:00 GMT-0500 (EST)