MySQL时间戳到JavaScript日期转换不正确

MySQL时间戳到JavaScript日期转换不正确,javascript,mysql,html,highcharts,Javascript,Mysql,Html,Highcharts,所以我在mysql中有一个时间戳: SELECT `tsdate`, UNIX_TIMESTAMP( `tsdate`) FROM t1 2010-11-07 21:50:05, 1289191805 如果我尝试使用以下命令,它会显示错误的时间/日期 var newDate = new Date(); newDate.setTime(1289191805000); dateString = newDate.toUTCString(); alert(dateString); Mon, 08 N

所以我在mysql中有一个时间戳:

SELECT `tsdate`, UNIX_TIMESTAMP( `tsdate`) FROM t1
2010-11-07 21:50:05, 1289191805
如果我尝试使用以下命令,它会显示错误的时间/日期

var newDate = new Date();
newDate.setTime(1289191805000);
dateString = newDate.toUTCString();
alert(dateString);

Mon, 08 Nov 2010 04:50:05 GMT
如何让JavaScript显示正确的日期

我目前正在使用highcharts工具进行绘图,它也显示了错误的日期/时间(它是用JavaScript编写的)。我不想更改highcharts的代码,但如果需要,我会更改


谢谢,Josh看起来你有时区问题。正如你看到的,javascript是GMT,而我怀疑你的是美国西部的某个时间

在MySQL查询中尝试以下操作:

SELECT UNIX_TIMESTAMP( CONVERT_TZ( tsdate, '-07:00', 'GMT') ) FROM t1
-07:00可以替换为您所在的任何时区标识符


另一种解决方案是在JavaScript中执行
newDate.setTime(mysqlTimestamp+7*3600000)
,只在那里调整它。

如前所述,使用toString将在本地时间返回它,尽管它也会有额外的时区信息。在没有额外时区信息的情况下,以本地时间显示它的一种方法是使用getTimezoneOffset()(以分钟为单位返回值)乘以60(以秒为单位)乘以1000(以毫秒为单位)

我找到了解决办法

我还想感谢Anthony Grist和Seldaek提供了一些有用的代码

var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);

时间戳应该在哪个时区?也是UTC吗?如果您居住的地方位于GMT-7时区,使用
.toString()
将生成正确的时间!但我不想硬编码时区。如果其他人从-8查看数据会怎么样?还是-5?
Highcharts.setOptions({
   global: {
      useUTC: false
   }
});
var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);