問題タブ [year2038]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
289 参照

ruby - 32 ビット ruby​​ 1.9.2p290 時間は 2038 年を処理できませんか?

32 ビットの ruby​​ 1.9.2p290 (これを使用する必要があります) は、現在の時刻に 25 (24 ではありません!) 年を追加するのに苦労しているようです。

プロデュース:

more_time.class = Fixnum

more_time.class = Fixnum

ruby_time.rb:11:in `+': time + 788400000.000000 out of Time range (RangeError) from ruby​​_time.rb:11

2038 年問題に遭遇していますか? 64 ビットの Ruby 1.9.2-p290 ではこの問題は発生しません。

0 投票する
2 に答える
1830 参照

mysql - エポックから 136 年を格納するために 32 ビット全体を使用しないのはなぜですか?

UNIX やMySQL のタイムスタンプなどで何度も見てきました。エポックは 1970 年 1 月 1 日から始まりますが、記録可能な最大の年は 2038 年です。

したがって、完全な 32 ビットを使用すると、問題なく 2106 年に自然に到達します。しかし、どうやら 2038 年は 31 ビットにしか対応していないようです。では、なぜ 1 ビットを捨てるのでしょうか。完全な 32 ビットを使用することで、最初に地球を破壊する可能性があるため、問題を解決する必要がないことを期待できます...

コメントへの反応: もちろん、署名されているためですが、タイムスタンプに署名する必要があるのはなぜですか?? それがこの質問のポイントです。

0 投票する
1 に答える
90 参照

perl - perl、1970 年からの int 秒数

EPrintsソフトウェアの古いリリースを使用して、この関数 EPrints::Time::datestring_to_timetを使用して、1970 年以降の整数秒数を返します。

遠い将来の年で使用すると、負の数が得られます。

結果:

ここで何が問題なのですか?

0 投票する
1 に答える
192 参照

php - PHP mktime が 64 ビット システムで大きな整数値を返さない

2038 年よりも大きな unix_timestamps を取得しようとすると、PHP 関数mktimeに問題があります。64 ビット OS を使用しています。

サーバー上の PHP バージョン: php -vPHP 5.1.6 (cli) を提供します (ビルド: 2010 年 11 月 29 日 16:47:46)

php -r 'echo PHP_INT_MAX;'9223372036854775807を与える

しかし

php -r 'var_dump( mktime(0, 0, 0, 4, 1, 2099) );'bool(false) を与える

開発サーバー php -r 'var_dump( mktime(0, 0, 0, 4, 1, 2099) );'では int(4078677600) が返されます

この PHP 関数が 64 ビット システムで正しく動作しない原因は何ですか? また、 strtotimeは年が 2038 より大きい日付では機能しません

0 投票する
2 に答える
102 参照

php - PHP の date() が 32 ビットで高いタイムスタンプで失敗する

私はこの問題に遭遇しました:

望ましい&正しい結果(ローカルホスト上):

日、2114 年 9 月 30 日 10:31:58 +0100

誤った結果 (リモート):

1978 年 8 月 24 日木曜日 04:03:42 +0100

32 ビット プラットフォームでスクリプトを実行すると、悪い結果が得られます。有名なY2038問題だと思いますが、どうすれば直せますか?

タイムスタンプをエコーすると(変数に保存されている場合)、正常に表示されますが、date()破棄されます(int32にキャストすると思います)。

4567743118

[該当する場合は、debian リポジトリの PHP 5.4.4 です]

0 投票する
1 に答える
476 参照

php - PHP 2038年以降の日付をローカライズするにはどうすればよいですか

PHPで2038年以降のローカライズされた日付を使用しようとしています

strftime はタイムスタンプを使用するため、2038 年以降は機能しません

DateTime はローカライズされていません...

だから私は DateTime で IntlDateFormatter を使用しようとします:

ここで私が得るもの:datefmt_format:タイムスタンプを取得できません:U_ILLEGAL_ARGUMENT_ERROR

実際、IntlDateFormatter は内部的に日付をタイムスタンプに変換すると思います...

では、php で 2038 年以降の日付をローカライズするにはどうすればよいでしょうか。

0 投票する
2 に答える
6503 参照

linux - Linux カーネルの 64 ビット time_t

カーネル 3.19.1 をコンパイルしましたが、まだ問題がありtime_tます。cout << sizeof (time_t);私の意図した8バイトではなく、4バイトのサイズを与える単純なプログラムです。

make menuconfig 中に特定のオプションをオンにする必要がありますか?