15

2038年バグはウェブ全体にありますが、これはUNIXの問題のようです。これはJavaの日付にどのように影響しますか?

4

5 に答える 5

30

それができると思う理由は何ですか?Java のDateクラスは 64 ビットを格納しますlong(Y2K38 のように 32 ビットではありません)。また、ミリ秒も保存されるため、範囲が減少しますが、わずかです (~10 ビットに相当)。

Java には、292278994 年のバグがあります。

于 2010-11-30T12:28:40.047 に答える
4

プログラマーが懸念しているように、それがJavaDateクラスに影響を与えるとは思わない。すでに64ビット値を使用しています。32ビット値をまだ使用しているデータストアを使用している場合は、問題があることがわかります。27年間で32ビットOSが多すぎるとは思わない。

于 2010-11-30T12:34:10.903 に答える
4

Java と時刻は、Date クラスだけに限定されません。

日付/時刻はどこから来ることが多いですか? 多くの場合、ネイティブ メソッドである System.currentTimeMillis から。通常、Java では実装されていません。戻り値の型は long ですが、ネイティブ メソッドは単純に long に収まる任意の値を返すことができるため、ほとんど意味がありません。

それはすべて、OS とその JRE の実装に依存します。

明らかに 32 ビットの組み込みシステムが多くあり、今後もそうであるため、64 ビット システムの存在に依存するのは単純すぎるかもしれません。

一般に、Java は 2038 年問題にさらされています。

于 2013-01-24T23:33:43.723 に答える
0

これは実際には答えではありません。しかし、いくつかの投稿はそれを正しくしています。Java は 2038 に準拠していますが、10000 には準拠していません (9999 より後の何かを表す Date コンストラクターに long を入れると、動作せず、奇妙な数値が返されます)、2147483648 は Java の Date で許可されている最大値ではありませんクラス。

于 2013-03-26T20:39:53.423 に答える
-1

これはおそらく、日付データ型が 2038 年にロールオーバーした古い C 時代の名残りです。非常に古いアプリでは問題になる可能性がありますが、Java では問題になりません。欠伸。

于 2010-12-01T16:47:31.940 に答える