我在变量中有一个时间戳
$data = (float) -2208988800;
是否可以根据这些数据创建正确的日期?
date("d.M.Y", $data)
返回“07.02.2036”
最佳答案
你得到结果 07.02.2036
因为你在 x86(32 位机器)上,整数范围从 -2147483648
到 2147483647
(参见 echo PHP_INT_MAX;
)。 PHP 在内部将 date()
函数的第二个参数转换为整数,因此在 32 位机器上,字符串或 float -2208988800
将变为整数 2085978496
,这是日期 2036-02-07,demo .
echo date('Y-m-d', -2208988800);
# 2036-02-07 (x86)
# 1900-01-01 (x64)
如果您希望在 x86 和 x64 两台机器上都使用负时间戳,请使用 DateTime
扩展名:
$dt = new DateTime('@-2208988800');
echo $dt->format('Y-m-d');
请注意,对于 unix 纪元之前的日期,方法 getTimestamp()
将返回 false
,其中方法 format('U')
将返回正确的时间戳编号。
var_dump( $dt->format('U') ); # -2208988800
var_dump( $dt->getTimestamp() ); # false
关于php - 负 float 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20775300/