可能是一个愚蠢的问题,但我需要找到答案。我们正在编写的应用程序需要处理遥远的过去和未来日期,我认为处理我们的日期为64位Unix时间戳将是一个简单的解决方案,只要我正确理解PHP manual,这表明最大int值是平台相关的并且总是签名。因此,x64平台应支持2 ^ 63个咬合,而x86平台应支持2 ^ 31个最大咬合。
基本上,应用程序只处理整数时间戳,使我们相当复杂的算法更简单一些。但是,尝试处理远程过去或将来的时间戳值会导致PHP中当前x86构建的任何大于+/- 2 ^ 31的值的预期溢出。我的解决方案是简单地使用免费的visual c ++ studio下载编译x64 PHP版本,但在我深入研究之前我想知道我的假设是否正确 - “Windows x64 PHP版本将正确处理64位int值,并正确地将Windows'ticks'转换为64位Unix时间戳作为其原生日期/时间函数,就像它为x86构建一样。“
例如:
echo mktime(0, 0, 0, 12, 31, 2055);
将返回正确的时间戳,而不是 false 。
同样的事情适用于MYSQL时间戳。例如:
SELECT UNIX_TIMESTAMP('2065-11-30 10:30:19');
将返回正确的值,而不是'0',就像我们运行的当前x86版本一样。
- 我希望我不会太暧昧。提前致谢。我们这里只是一群科学极客而不是真正的程序员,而且正在努力应对这个“微不足道”的问题。
答案 0 :(得分:1)
有趣的问题:我曾经试过运行一些测试,期待一个完整的64位时间戳给出了大爆炸和太阳燃烧之间的日期范围,但发现它仍然只是较低的32位传递给date()函数时被处理,即使回显时间戳整数值显示完整的64位范围。
修改强>
但是,使用64位值范围设置dateTime对象时没有问题。