Json datetime到javascript datetime让我错误的日期

json datetime to javascript datetime gets me wrong date

本文关键字:datetime 错误 日期 javascript Json      更新时间:2023-09-26

我正试图将服务器上的日期时间以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)

谁能让我从痛苦中解脱出来,告诉我我做错了什么愚蠢的简单的事情?

在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]);

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

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

在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();