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


PHP difference between time() and getTimestamp() object [Year 2038 bug]

$now = time();

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

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

编辑:

有关此问题的更多信息,请查看此链接:什么是Unix时间戳,为什么使用它?

你试过了吗?你做了哪些工作来证实你的问题?

简单:

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

string(10) "01.01.5000"
bool(false)

所以:不,你不是save在使用时间戳从DateTime。

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

关于DateTime的含义不是获取Unix时间戳。它是关于避免Unix时间戳的。从您自己的评论链接中查看答案:什么是Unix时间戳,为什么要使用它?

由于DateTime::getTimestamp()返回的Unix时间戳在32位系统上存在Year-2038问题,因此当Year-2038问题适用时,它将在32位系统上返回false(但在64位系统上仍然有效)。

所以在32位系统上使用它是不安全的。