json datetime到javascript datetime让我错误的约会

时间:2013-05-06 16:01:22

标签: javascript json datetime epoch

我正在尝试将日期时间从服务器以JSON的形式转换为我可以在HighChart中使用的东西,但我一直在错误的一天。

var json = {"lastMinute":"2013-05-06 15:46:00"}; // GMT

var lastMinute = json.lastMinute;
var a = lastMinute.split(' ');
var d = a[0].split('-');
var t = a[1].split(':');
var date = new Date(d[0],d[1],d[2],t[0],t[1],t[2]);

// NEED TO CONVERT TO LOCALTIME

此输出:Thu Jun 06 2013 15:46:00 GMT-0700(PDT)

有人可以让我摆脱痛苦并告诉我,我做错了什么愚蠢的事情?

3 个答案:

答案 0 :(得分:1)

在js中,月份从0开始而不是1 ......

var json = {"lastMinute":"2013-05-06 15:46:00"}; // GMT

var lastMinute = json.lastMinute;
var a = lastMinute.split(' ');
var d = a[0].split('-');
var t = a[1].split(':');
var date = new Date(d[0],d[1]-1,d[2],t[0],t[1],t[2]);

答案 1 :(得分:0)

您可以使用Datejs(https://code.google.com/p/datejs/wiki/APIDocumentation)库。它非常有用,你有metod parseExact:

Date.parseExact("10/15/2004", "M/d/yyyy");

答案 2 :(得分:0)

要在JavaScript中最终解析和格式化日期,请使用moment.js库。

您可以明确表示UTC,这在下层浏览器中运行良好。

var m = moment.utc('2013-05-06 15:46:00');

这些值看起来像是ISO8601格式(没有T)。所以你应该只使用上面的代码。但如果你想要更精确,你可以这样做:

var m = moment.utc('2013-05-06 15:46:00', 'YYYY-MM-DD HH:mm:ss');

我建议尽可能长时间地将其保留为moment。他们的格式很棒。但是如果你需要它作为javascript日期,请执行:

var date = m.toDate();