MySQL时间戳到JavaScript日期未正确转换
-
10-10-2019 - |
题
因此,我在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);
不隶属于 StackOverflow