【发布时间】:2017-04-20 23:14:19
【问题描述】:
问题很简单,这是一个错误还是我在这里遗漏了一些东西,事实是 getdate 的较大值会返回较早的日期。有什么问题??
【问题讨论】:
-
你知道二进制数、32位整数等吗?
-
你的代码在哪里?
-
什么都没有,我问是因为我不知道为什么会这样,而且我担心我的项目会因为我经常使用 unix 时间戳而下地狱
问题很简单,这是一个错误还是我在这里遗漏了一些东西,事实是 getdate 的较大值会返回较早的日期。有什么问题??
【问题讨论】:
2500000000 = 0x9502F900 = 1001 0101 0000 0010 1111 1001 0000 0000
即在 32 位系统上,符号位已设置,因此您实际上得到了一个负数。由于宇宙始于 1970 年(根据 unix),1913 年的日期是负时间戳的明显症状。
【讨论】:
2,500,000,000 超过了 32 位整数的最大值。
我没有提前知道答案。这些是我用来解决这个问题的资源:
http://php.net/manual/en/language.types.integer.php
INT max size for 32bit system
【讨论】: