質問

だから私は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をGrapthに使用していますが、間違った日付/時間も表示されています(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()(数分で値を返す)を使用して60(数秒で取得するため)を乗算することです(ミリ秒単位で取得するため)

var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top