php date()函数不支持处理大于2147483648的数字?

PHP代码:

<?php

echo 2147483648 + 100;

echo '<br>';

echo date('Y-m-d', 2147483648);

?>


运行后显示结果,可以看出第一样运算正确支持处理2147483648 + 100,但第二行就显示1901年了:




首先php是64位的,windows也是2012 64位, apache也是64位的:


为什么会出现这么严重的问题啊, floatval()肯定不行, 因为用它处理后还有小数点也被存入数据库了, 然后还会出现严重的判断逻辑灾难啊,


比如 if(floatval($_GET[id]) === 123) 就算id=123它也认为不成立返回假, 为什么程序代码处理整数不能严格按照数学界的标准来, 只要是纯数字的都是整数啊???
测试出来不是php版本是否升级的问题, 而是TMD所有Windows的php都有该BUG, 即使你的php和windows全是64位也不行,
很多函数不支持处理大于21亿的数

开始没注意到是 php 5.6.23
你可以看一下 php 的发版说明:只有 php 7 才真正解决了 64位数运算的问题(不分 x86、x64)
所以你应该一步升级 php7 到位,而不是在低版本上纠结历史问题

PHP7下,没问题,正常输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值