Y2K38 漏洞是什么?

Y2K38,又称 Unix Millennium Bug, 这个漏洞将会影响到所有 32 位系统下用 UNIX

时间戳整数来记录时间的 PHP,及其它编程语言。一个整型的变量所能保存的最大时间为 2038 年 1 月 19 日

03:14:07。超过这个时间后,整型数值将会溢出。从 1970 年 01 月 01 日开始,到世界标准时 2038 年 01 月

19 日星期二凌晨 03:14:07 超过 2^31 – 1。2^31 – 1 就是 0x7FFFFFFF,相信很多编程员都看过,在

32 位系统里,这表示最大的有符号整数。如果用它来表示秒数,大概相当于 68.1 年,从 1970 年到 2038

年刚好是这个数。

是的,这是 28

年以后的事情了。你们肯定有些人认为我是在忋人忧天。要知道世纪末的千年虫问题就是这样产生的。另外,我们在开发一些应用的时候,可能会用到未来的日期,比如一个

25 年期的长期存款,退休金和保险业的财务数据等。

64 位系统会受到影响吗?

理论上不会,如果你是在 64 位的操作系统下使用 PHP,你的程序应该不会受到影响。我强烈建议你进行一下测试。64

位系统下可以保存的日期最远日期是现在宇宙年龄的 21 倍~ 292 亿年。

如果你确认你的财务系统运行在 64 位系统上的话,你可以安稳的睡个大头觉了。

有其它的解决方法吗?

幸运的是,PHP 从 5.2 版本开始引入了一个 DateTime 的类 (5.1 中开始实验加入,5.3

版本中扩展了一些方法)…

$date = '2040-02-01';

$format = 'Y-m-d H:i';

$mydate2 = new DateTime($date);

echo '

正常时间:',

$mydate2->format($format),

'

';

echo '时间溢出:',date('Y-m-d H:i',strtotime($date));

exit;

?>

2038年问题 php,php strtotime() mktime() 的2038年问题 Y2K38漏洞相关推荐

  1. php strtotime 2038 时间戳,PHP的strtotime计算2038年以上日期的时间戳错误

    今天同事遇到一个bug,获取有效期值错误,同样的代码,其他开发人员操作都没有问题.在定位跟踪后发现有效期有值,如下: $expireDate = 2133999048;        但是在该时间戳的 ...

  2. mysql 2038年问题_关于PHP转换超过2038年日期出错的问题解决

    前言 最近在写一个项目接口.测试中发现服务器上测试正常的功能,在本地一直有问题.一步步的排查,最终锁定问题是由于函数strtotime返回了一个false值,导致数据插入数据库失败. 相同代码运行结果 ...

  3. php strtotime mktime,php中time()和mktime()用法的区别分析

    在php编程中,时间函数time(),返回当前时间的.而mktime()函数,不是返回当前时间,而是格式化时间. 虽然单独写mktime()而不加任何参数如:echo mktime()和echo ti ...

  4. PHP date, strtotime, mktime处理

    今天经过几个工作日(周一-周五)后为哪天. 2016-09-08经过5个工作日为2016-09-14 $currentDate=date('Y-m-d', strtotime("-1 day ...

  5. php strtotime mktime,php mktime和strtotime

    本文章来给各位同学介绍一下利用php用strtotime或mktime指定日期数据(本周,上周,本月,上月,本季度)实例,希望对各位同学会有所帮助呀. strtotime定义和用法 strtotime ...

  6. 2038年问题 linux内核5.6,Linux Kernel 5.6 开发者已准备好应对 2038 年问题

    2038 年问题与千年虫问题类似,它可能会导致某些软件在 2038 年 1 月 19 日 3 时 14 分 07 秒之后无法正常工作.届时,在大部分 32 位操作系统上,依据 "time_t ...

  7. 2038年问题 linux内核5.6,Linux Kernel 5.6 开发者已率先做好准备 应对 2038 年问题

    新十年伊始,Linux Kernel 5.6的开发者已经准备好着手解决将在下一个十年到来的2038年问题(又称"Y2038"或"Unix Y2K"问题).Lin ...

  8. 2038计算机系统,2038年问题

    2038年问题是指在使用POSIX时间的32位计算机应用程序上,格林尼治时间2038年1月19日凌晨03:14:07(北京时间:2038年1月19日中午11:14:07)之后无法正常工作. 中文名 2 ...

  9. 2038年问题 linux内核5.6,Linux 5.1延续为2038年问题所做的多年准备

    Linux 5.1为2038年问题在内核方面继续进行大量的工作. 多年来在Linux内核一直看到"Y2038"的工作,而这一努力远未结束.Thomas Gleixner为Linux ...

最新文章

  1. ios nslinkattributename 自定义url_iOS音视频播放指南(二)
  2. Windows下更改pip镜像源
  3. 机器学习基础-弹性网 Elastic Net-08
  4. Maven构建分布式项目时子模块相互依赖打包技巧
  5. 计算机技能大赛图形试题,图形图像处理技能大赛竞赛试题试卷.doc
  6. golang 将对象转换成string_Golang 匿名 struct 解码数据技巧
  7. 应该怎么样学习前端呢?
  8. linux驱动基础开发3——linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解-转
  9. php操作cookie_php设置cookie【三种方案】
  10. MYSQL中使索引失效的情況
  11. 主键和外键举例_mysql 基础篇之主键和外键
  12. YOLOv1: You Only Look Once: Unified, Real-Time Object Detection
  13. 不动点迭代 开平方 Excel演示
  14. 【原创】(进阶)VMware16.1.2通过PE+Dism++绕过TPM限制安装Win11首个正式原版镜像
  15. 开机找不到硬盘的原因
  16. Setup Factory导入注册表时丢失部分语句
  17. 百度、腾讯、滴滴,如何看2019智能网联汽车发展 | 2019互联网岳麓峰会...
  18. Neural Voice Puppetry阅读笔记
  19. 「Git」常用工作流介绍
  20. php制作404,thinkphp制作404跳转页的简单实现方法

热门文章

  1. 机器学习基础(四十九)—— 总结
  2. C++基础::limits
  3. 工具的使用——vs2013
  4. 5岁自学python编程-三十岁了还可以学编程吗?只要你想,只要你做,什么时候都不晚...
  5. python零基础学习书-零基础学习python推荐几本书?
  6. python创意小作品-python turtle库的几个小demo
  7. python和java选择哪个-JAVA和Python哪个好就业?
  8. 博越同级别没对手!敢和同级别quot;王者quot;硬碰硬!
  9. R-查询子段元素和 提前储存
  10. vue打包后图片未显示问题