2017-04-20 2 views
0

これはバグでしょうか、ここで何か不足しています。 。何が間違っている? 32ビットシステム上でなぜgetdate(1500000000)は2017年7月7日を返しますが、getdate(2500000000)は2月13日を返します1913

+2

あなたが進数、32ビットのint型などについて何を知っていますか? – John3136

+1

あなたのコードはどこですか? –

+0

私はなぜそれが起こっているのかわからないので私は尋ねています。私はUNIXのタイムスタンプをたくさん使っているので、私のプロジェクトが地獄になるかもしれないことを恐れています。 – Marange

答えて

0

2,500,000,000は、32ビット整数の最大値を超えています。

私は前もって答えを知らなかった。これらは私がこれを理解するために使用するリソースです: http://php.net/manual/en/language.types.integer.php
INT max size for 32bit system

+0

Yup!私は[John3136](http://stackoverflow.com/a/43531455/1370831)の答えを読んだ後、それを学び、不正確さを取り除くために鉱山を編集しました。あなたは素早くしています;) – heylookltsme

+0

だから、私はそれをどのように扱うべきですか?私のプロジェクトは結局クラッシュするでしょうか? – Marange

+0

@Marange - 64ビットPHPに切り替えるか、UNIXタイムスタンプではなくDateTimeオブジェクトを使用する –

2

25億= 0x9502F900 = 1001 0101 0000 0010 1111 1001 0000 0000

すなわち、符号ビットがセットされているので、あなたが実際に負の数を持っています。 1970年に始まった宇宙(UNIXによる)以来、1913年の日付は負のタイムスタンプの明確な症状です。

関連する問題