1

だから私は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で記述されています)。ハイチャートのコードは変更したくありませんが、必要に応じて変更します。

ありがとう、ジョシュ

4

3 に答える 3

2

タイムゾーンに問題があるようです。ご覧のとおり、JavaScriptはGMTですが、米国西部の時間だと思いますか?

MySQLクエリで次のことを試してください。

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

-07:00は、現在のタイムゾーン識別子に置き換えることができます。

別の解決策はnewDate.setTime(mysqlTimestamp + 7*3600000)、JavaScriptでそれをそこでのみ調整することです。

于 2011-01-13T15:02:49.673 に答える
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);
于 2011-01-13T15:29:51.593 に答える
0

前述のように、toString を使用すると現地時間で返されますが、追加のタイムゾーン情報も含まれます。追加のタイムゾーン情報なしで現地時間で表示するハックは、getTimezoneOffset() (値を分単位で返す) に 60 を掛けて (秒単位で取得する)、1000 を掛けて (ミリ秒単位で取得する) 使用することです。

var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);
于 2011-01-13T15:27:07.987 に答える