php strtotime 2099,PHP的strtotime()函数2039年bug问题
最近在开发一个订单查询模块的时候,想当然的写了个2099年的日期,结果PHP返回了空值,肯定是发生溢出错误了,搜索了网上,发现下面这篇文章,但是我的问题依然没有解决,要怎么得到2038年以后的时间戳呢?
我综合了网上的资料,写了以下测试代码,应该可以解决这个问题了:
我的测试环境是:Win7 64位,PHP环境是:PhpStudy PHP5.5n
<?phpecho ‘PHP中正整形常量的最大值【PHP_INT_MAX】:‘.PHP_INT_MAX.‘
‘;echo ‘PHP_INT_MAX能转换为的最大日期值:‘.date("Y-m-d H:i:s", PHP_INT_MAX).‘
‘;echo ‘
‘;$date1 = ‘1970-01-01 08:00:00‘;echo ‘1970-01-01 08:00:00 时间戳:->‘.strtotime($date1).‘
‘;//
$date2 = ‘2038-01-19 11:14:07‘;echo ‘2038-01-19 11:14:07 时间戳:->‘.strtotime($date2).‘
‘;$date2a = ‘2038-01-19 11:14:08‘;$datetime2a = new DateTime($date2a);echo ‘2038-01-19 11:14:08 时间戳:->‘.$datetime2a->format(‘U‘).‘
‘;//
$date3 = ‘2099-12-31 00:00:00‘;$datetime = new DateTime($date3);echo ‘2099-12-31 00:00:00 时间戳:->‘.$datetime->format(‘U‘).‘
‘;$date4 = ‘9999-12-31 23:59:59‘;$datetime = new DateTime($date4);echo ‘9999-12-31 23:59:59 时间戳:->‘.$datetime->format(‘U‘).‘
‘;?>
PS.有关format()函数的参数,参见官方文档:http://www.php.net/manual/en/function.date.php
以上代码运行的结果:
PHP中正整形常量的最大值【PHP_INT_MAX】:2147483647
PHP_INT_MAX能转换为的最大日期值:2038-01-19 11:14:07
1970-01-01 08:00:00 时间戳:->0
2038-01-19 11:14:07 时间戳:->2147483647
2038-01-19 11:14:08 时间戳:->2147483648
2099-12-31 00:00:00 时间戳:->4102329600
9999-12-31 23:59:59 时间戳:->253402271999
由于本机的PHP_INT_MAX就是:2147483647,所以它转换为日期值,最大也就是 2038-01-19 11:14:07,超过哪怕一秒,也就产生了溢出。
-------------------------------------------------------------------------------------------------------------------------------------------------
以下是我找到一篇参考文章:《php时间日期处理到2038年之后该怎么办?》
php strtotime 2099,PHP的strtotime()函数2039年bug问题相关推荐
- php strtotime 8小时,php时间函数strtotime的深入理解
本节内容: php时间函数strtotime 先来看下php官方手册中对strtotime的描述: strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳. 也就是说,此函数 ...
- 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug
0.11内核rd_load@ramdisk.c中memcpy函数好像有bug,如: #define memcpy(dst,src,n) \ __asm__("cld;rep;movs ...
- 关于VC++6.0中getline函数的一个bug
关于VC++6.0中getline函数的一个bug 最近在调试程序时,发现getline函数在VC++6.0和其他编译器上运行结果不一样,比如有如下这段程序: #include <iostrea ...
- c语言非线程安全函数引发的BUG一列
公司的机器最近遇到一个bug(其实这个bug一年前就出现过,只是未引起重视),现象是这样的:在生产环境中,用户连续打印票的时候,中间某张票的一个时间可能会出问题,该时间本来是一个未来的时间,却被打印成 ...
- php is_subclass_of,PHP_PHP is_subclass_of函数的一个BUG和解决方法,is_subclass_of的作用:
复制代码 - phpStudy...
PHP is_subclass_of函数的一个BUG和解决方法 is_subclass_of的作用: bool is_subclass_of ( object object, string class ...
- [原创]Redis BUG系列(I)——SDS字符串的sdssplitlen函数实现顺序BUG,浪费了计算与内存资源
这里写自定义目录标题 简要 BUG介绍 源码与说明 BUG内容 修改方法 BUG验证 BUG影响 版本范围 哪些时候调用sdssplitlen这个函数? 我在GIT上提交的pull request 简 ...
- php strtotime -1 day,PHP strtotime() 函数
strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳. strtotime(time,now) time 规定要解析的时间字符串. now 用来计算返回值的时间戳.如果省略 ...
- php中strtotime参数,PHP中strtotime函数使用方法
在PHP中有个叫做strtotime的函数.strtotime 实现功能:获取某个日期的时间戳,或获取某个时间的时间戳.strtotime 将任何英文文本的日期时间描述解析为Unix时间戳[将系统时间 ...
- php strtotime坑,php中strtotime函数的坑
问题: //根据出生年月 计算年龄 $birthday = '0000-00-00'; $age = strtotime($birthday); if($age === false){ return ...
最新文章
- LeetCode 33 搜索旋转排序数组
- Windows程序闪退Windows日志捕获Kernelbase模块错误
- vb.net 文本框为空提示,一键清空文本框所有内容
- hdu 1257最少拦截系统(贪心)
- 域名防系统+独立接口池+独立会员+独立权限
- POJ2940 HDU1489 UVA11054 Wine Trading in Gergovia【Ad Hoc】
- javaweb环境的配置 以及tomcat的安装
- UOJ356 [JOI2017春季合宿] Port Facility 【启发式合并】【堆】【并查集】
- 导入自己写好的python包
- 摆脱某某助手,使用无线投屏功能共享安卓屏幕到PC
- 软考中级网络工程师的就业前景以及考试要求
- 向98年的华为学习:没有高管办公室的青铜器软件
- office表格标题和表格距离过大怎么解决
- solidworks2014可否保存成以前版本?--问题解决
- [深度学习项目] - 时间序列预测 (5)[待补充]
- GetDC和BeginPaint
- jenkins-RestAPI调用出现Error 403 No valid crumb was included in the request解决方法
- 全国省份地区相关常量备忘
- 计算机教师职称申报工作总结,信息技术(计算机)教师职称评定工作总结
- 上大学后才知道的14件事
热门文章
- 微信小程序IOS手机能正常访问但是安卓手机出现REQUEST FAILED无法访问服务器问题
- 空间注意力 通道注意力_注意力发生了什么变化?
- 网易互娱2017实习生招聘在线笔试(二)
- 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功
- Struts2编写自定义验证拦截敏感词汇(十二)
- C语言之逆序输出一个四位数
- nginx 配置之 proxy_pass参数详解
- 服务器硬盘数据备份到nas,谁说固态硬盘做存储是鸡肋?NAS存储服务器还能这样玩...
- 【国科大矩阵论】2021秋季叶世伟矩阵论考试计算题
- EagleEye简介:户外视频监控分析和面部识别软件