2038年バグはウェブ全体にありますが、これはUNIXの問題のようです。これはJavaの日付にどのように影響しますか?
5 に答える
それができると思う理由は何ですか?Java のDate
クラスは 64 ビットを格納しますlong
(Y2K38 のように 32 ビットではありません)。また、ミリ秒も保存されるため、範囲が減少しますが、わずかです (~10 ビットに相当)。
Java には、292278994 年のバグがあります。
プログラマーが懸念しているように、それがJavaDateクラスに影響を与えるとは思わない。すでに64ビット値を使用しています。32ビット値をまだ使用しているデータストアを使用している場合は、問題があることがわかります。27年間で32ビットOSが多すぎるとは思わない。
Java と時刻は、Date クラスだけに限定されません。
日付/時刻はどこから来ることが多いですか? 多くの場合、ネイティブ メソッドである System.currentTimeMillis から。通常、Java では実装されていません。戻り値の型は long ですが、ネイティブ メソッドは単純に long に収まる任意の値を返すことができるため、ほとんど意味がありません。
それはすべて、OS とその JRE の実装に依存します。
明らかに 32 ビットの組み込みシステムが多くあり、今後もそうであるため、64 ビット システムの存在に依存するのは単純すぎるかもしれません。
一般に、Java は 2038 年問題にさらされています。
これは実際には答えではありません。しかし、いくつかの投稿はそれを正しくしています。Java は 2038 に準拠していますが、10000 には準拠していません (9999 より後の何かを表す Date コンストラクターに long を入れると、動作せず、奇妙な数値が返されます)、2147483648 は Java の Date で許可されている最大値ではありませんクラス。
これはおそらく、日付データ型が 2038 年にロールオーバーした古い C 時代の名残りです。非常に古いアプリでは問題になる可能性がありますが、Java では問題になりません。欠伸。