php - 负 float 日期

标签 php date datetime timestamp

我在变量中有一个时间戳

$data = (float) -2208988800;

是否可以根据这些数据创建正确的日期? date("d.M.Y", $data) 返回“07.02.2036”

最佳答案

你得到结果 07.02.2036 因为你在 x86(32 位机器)上,整数范围从 -21474836482147483647(参见 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)

run code on x86 machine

run code on x64 machine

如果您希望在 x86 和 x64 两台机器上都使用负时间戳,请使用 DateTime扩展名:

$dt = new DateTime('@-2208988800');
echo $dt->format('Y-m-d');

demo

请注意,对于 unix 纪元之前的日期,方法 getTimestamp() 将返回 false,其中方法 format('U')将返回正确的时间戳编号。

var_dump( $dt->format('U') );    # -2208988800
var_dump( $dt->getTimestamp() ); # false

demo

关于php - 负 float 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20775300/

相关文章:

sql - Oracle - 仅返回最早日期当前或将来的日期

c# - 字符串到日期时间无法转换 - C#

php - 获取一周的第一个/最后一个日期

python - 如何按指定时间自动增加数据框列的时间并按天自动增加日期?

php - 将当前日期增加 5 天

PHP 查询将多个随机长度数组写入 MySQL 数据库中的同一个表,而不会出现 "Undefined offset"错误

javascript - 以 Javascript/JSON 显示来自 MYSQL SELECT 的 PHP 结果

PHP - LDAP 搜索偶尔通过 TLS/SSL 工作

MySQL 日期通配符性能

javascript - AJAX POST 不起作用