問題

java.util.DateのgetTimeメソッドは、このDateオブジェクトで表される1970年1月1日から00:00:00 GMTまでのミリ秒数を返します。

私は以下のような奇妙な状況に気づいた。

システムタイムゾーンは次のとおりです。(UTC + 02:00)イスタンブール

 Date currentDate = new Date();
System.out.println(currentDate .getTime());
System.out.println(currentDate);
 

Java ConsoleOutput:

1360753217219

2013年2月13日:00:17獣医


私のjavascriptプラグインは以下のようにこの長いオブジェクトを使用しています。

Javascript:

 console.log(new Date(1360753217219));
 

ブラウザConsoleOutput:

日付{2013年2月13日13:00:17 GMT + 0200(トルコ標準時)}


しかし、それはすべて大丈夫です!私のローカルタイムゾーンを(UTC04:30)Caracasとして変更した後、状況と時間は同じミリ秒で以下のように変化しています。


Javascript:

 console.log(new Date(1360753217219));
 

ブラウザConsoleOutput:

日付{2013年2月13日06:30:17 GMT-0430(ベネズエラ標準時)}

誰かがこれを説明できますか?それはjsのバグですか?さらに重要なのは、js側のさまざまなタイムゾーンで同じ日付を取得するために、Java側でこれをどのように処理する必要がありますか?

ありがとう!

  ベストアンサー

ミリ秒はタイムゾーンに依存しません。時間は1970年1月1日から絶対として測定されます。したがって、ミリ秒を取得してから、特定のタイムゾーンのローカル時間が事実の後にあるものを調べることが考えられます。あなたがそれについて考えるなら、それは理にかなっています。 1970年以降に渡されたミリ秒数は、あなたがどこにいても同じです。

それは少し混乱しますが、タイムゾーンを調整するためにミリ秒でヌードルを鳴らさないでください。すべてのDateライブラリには、ミリ秒スタンプをタイムゾーン固有のローカルタイムに変換するメカニズムがあります。

したがって、あなたの具体的な質問がサーバーとクライアントの間で効果的に日付を通信する方法である場合(あなたが使用している言語は重要ではありません)、ミリ秒を前後に渡して、あなたが話しているグローバルな特定の時間のいずれかで作業するのは完全に安全です。

  同じタグがついた質問を見る

javajavascriptdatetimezoneprimefaces-extensions