PHP()和getTimestamp()对象之间的差异[年2038 bug]

时间:2014-06-27 08:16:16

标签: php

有什么区别:

$now = time();

$now = new DateTime();
$now->getTimestamp();

考虑到32位INT限制(也就是2038年的bug),在32位系统中使用getTimestamp()是否安全?

编辑:

有关此问题的详细信息,请查看以下链接:What is a Unix timestamp and why use it?

2 个答案:

答案 0 :(得分:1)

你有什么尝试?你做了什么,以确认你的问题?

足够简单:

$datetime = new DateTime('5000-01-01');
var_dump($datetime->format('d.m.Y'));
var_dump($datetime->getTimestamp());

输出:

string(10) "01.01.5000"
bool(false)

所以:不,你在使用DateTime的TimeStamp时不是save

无论如何:问题可能是一个很好的参考,但可以通过测试很容易找到。

关于DateTime的Sence不是获取Unix时间戳。它是关于避免Unix时间戳。请参阅评论中您自己的链接中的答案:What is a Unix timestamp and why use it?

答案 1 :(得分:1)

由于DateTime::getTimestamp()返回在32位系统上遇到2038年问题的Unix时间戳,因此当适用Year-2038问题时,它将在32位系统上返回false(但仍可在64位系统上运行)。

因此,在32位系统上使用是不安全的。