我在变量
中有时间戳$data = (float) -2208988800;
是否可以根据此数据创建正确的日期?
date("d.M.Y", $data)
返回“07.02.2036”
答案 0 :(得分:2)
您得到结果07.02.2036
,因为您使用的是x86(32位计算机),其中整数范围从-2147483648
到2147483647
(请参阅echo PHP_INT_MAX;
)。 PHP内部将date()
函数的第二个参数转换为整数,因此在32位机器上,字符串或浮点-2208988800
将变为整数2085978496
,即日期为2036-02-07,{{ 3}}
echo date('Y-m-d', -2208988800);
# 2036-02-07 (x86)
# 1900-01-01 (x64)
如果您希望在两台计算机x86和x64上使用负时间戳,请使用run code on x64 machine扩展名:
$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