JavaScript datetime parsing



可能的重复项:
如何在 JavaScript 中使用格式规范将字符串转换为日期时间?

我有一个 json 响应,其中包含一个类似哈希图;

{"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 的日期时间部分,例如;

日/月

/年 小时:月:ss

让我们假设我像这样放置所有配对元素;

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

然后,我尝试解析如下所示的日期时间部分,并在控制台上获得了日期{无效日期};

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

如何格式化这种类型的日期时间。

尝试以下操作:

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

使用 Date.parse 方法将字符串分析为自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。获取该毫秒数,然后再次调用 Date 方法将该时间转换为日期对象。

编辑

好吧,对于

这种情况来说,这可能有点丑陋,但似乎Firefox在-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);
}

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)

最新更新