1

我正在尝试将服务器中的日期时间以 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

此输出:2013 年 6 月 6 日星期四 15:46:00 GMT-0700 (PDT)

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

4

3 回答 3

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]);
于 2013-05-06T16:05:07.110 回答
0

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

Date.parseExact("10/15/2004", "M/d/yyyy");
于 2013-05-06T16:12:57.403 回答
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();
于 2013-05-06T16:50:42.487 回答