因此,我在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的代码,但是如果需要,我会。

谢谢,乔什

有帮助吗?

解决方案 3

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

其他提示

看起来您有一个时区问题。如您所见,JavaScript是GMT,而我怀疑您是西方时代的时间?

在您的MySQL查询中尝试以下内容:

SELECT UNIX_TIMESTAMP( CONVERT_TZ( tsdate, '-07:00', 'GMT') ) FROM t1

-07:00可以用您进入的任何时区标识符代替。

另一种解决方案可能是 newDate.setTime(mysqlTimestamp + 7*3600000) 在JavaScript中仅在此处调整它。

如前所述,尽管它还将提供额外的时区信息,但使用ToString将在当地返回。在没有其他时区信息的情况下,在当地显示它的黑客是使用getTimeZoneOffset()(以分钟为单位返回值)乘以六十个(以秒为单位)乘以1000(将其乘以1000(以毫秒为单位)

var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top