所以我在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显示正确的日期?
我目前正在使用工具高级图表来查看,它也显示错误的日期/时间(用JavaScript编写)。我不想更改highcharts的代码,但如果需要我会。
谢谢,乔希
答案 0 :(得分:2)
看起来你有时区问题。正如您所看到的那样,javascript是GMT,而我怀疑你的是美国西部时间吗?
在MySQL查询中尝试以下内容:
SELECT UNIX_TIMESTAMP( CONVERT_TZ( tsdate, '-07:00', 'GMT') ) FROM t1
-07:00可以替换为您所在的任何时区标识符。
另一种解决方案可能是在JavaScript中执行newDate.setTime(mysqlTimestamp + 7*3600000)
,只在那里进行调整。
答案 1 :(得分:0)
如前所述,使用toString将在本地时间返回它,但它也会有其他时区信息。在没有附加时区信息的情况下,在本地时间显示它的黑客是使用getTimezoneOffset()(以分钟为单位返回一个值)乘以60(以秒为单位)乘以1000(以毫秒为单位)
var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);
答案 2 :(得分:0)
我在http://highslide.com/forum/viewtopic.php?f=9&t=8613
找到了解决方案Highcharts.setOptions({
global: {
useUTC: false
}
});
我还要感谢Anthony Grist和Seldaek提供了一些有用的代码!
var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);