前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php date()函数不支持处理大于2147483648的数字?「建议收藏」

php date()函数不支持处理大于2147483648的数字?「建议收藏」

作者头像
全栈程序员站长
发布2022-07-19 12:20:41
6650
发布2022-07-19 12:20:41
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君。

PHP代码:

代码语言:javascript
复制
<?php

echo 2147483648 + 100;

echo '<br>';

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

?>

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

php date()函数不支持处理大于2147483648的数字?「建议收藏」
php date()函数不支持处理大于2147483648的数字?「建议收藏」

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

php date()函数不支持处理大于2147483648的数字?「建议收藏」
php date()函数不支持处理大于2147483648的数字?「建议收藏」

为什么会出现这么严重的问题啊, 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下,没问题,正常输出

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111448.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年2月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档