(1)先温习一下什么是闰年(Leap Year)

闰年是公历中的名词。闰年分为普通闰年世纪闰年

普通闰年:能被4整除但不能被100整除的年份为普通闰年。(如2004年就是闰年,1999年不是闰年);

世纪闰年:能被400整除的为世纪闰年。(如2000年是世纪闰年,1900年不是世纪闰年);

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。闰年共有366天(1-12月分别为31天,29天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天)。

凡阳历中有闰日(二月为二十九日)的年;闰余(岁余置闰。阴历每年与回归年相比所差的时日);注意闰年(公历中名词)和闰月(农历中名词)并没有直接的关联。

公历中只分闰年平年,平年有365天,而闰年有366天(2月中多一天);平年中也可能有闰月(如2017年是平年,农历有闰月,闰6月)。

有没有小伙伴和我一样是闰年2月29出身的哇,4年一次阳历生日,就是这么巧 ~~~

判断是否是闰年的代码都写过吧,闰年的判断条件如下:

year % 4 == 0 && year %100 != 0 || year % 400 == 0;

------------------------------------------------------------------------------------------------------

(2)计算机2000年问题,又叫做"千年虫"、"电脑千禧年千年虫问题"或"千年危机"。缩写为"Y2K"。是指在某些使用了计算机程序的智能系统(包括计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运 算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功 能紊乱甚至崩溃。因此从根本上说千年虫是一种程序处理日期上的bug(计算机程序故障),而非病毒。

广泛地讲,"千年虫"还包括以下两个方面的问题:一个是在一些计算机系统中,对于闰年的计算和识别出现问题,不能把2000年识别为闰年,即在该计算机系统的日历中没有2000年2月29日这一天,而是直接由2000年2月28日过渡到了2000年3月1 日;另一个是在一些比较老的计算机系统中,在程序中使用了数字串99(或99/99等)来表示文件结束、永久性过期、删除等一些特殊意义的自动操作,这样当1999年9月9日(或1999年4 月9日即1999年的第99天)来临时,计算机系统在处理到内容中有日期的文件时,就会遇到99或99/99等数字串,从而将文件误认为已经过期或者将文件删除等错误操作,引发系统混乱甚至崩溃等故障。

"千年虫"问题的根源始于60年代。当时计算机存储器的成本很高,如果用四位数字表示年份,就要多占用存储器空间,就会使成本增加,因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。随着计算机技术的迅猛发展,虽然后来存储器的价格降低了, 但在计算机系统中使用两位数字来表示年份的做法却由于思维上的惯性势力而被沿袭下来, 年复一年,直到新世纪即将来临之际,大家才突然意识到用两位数字表示年份将无法正确辨识公元2000年及其以后的年份。1997年,信息界开始拉起了"千年虫"警钟,并很快引起了全球关注。

--------------------------------------------------------------------------------------------------------------------

(3)和21世纪初的千年虫(the Millennium bug)问题类似,32位的Unix操作系统和Linux操作系统时间溢出问题又称为2038年问题(the Year 2038 problem)。如果你想知道什么是2038问题的话,你需要知道一些技术上的东西。这个bug是由用来写Unix/Linux的C语言引起的,C语言中用 time_t 来代表时间和日期,time_t 是整数(int)型的,它用来记载从1970年1月1日到2000年所经历的秒数。

这个数据是以32位存储的,第一位是符号位,其余的31位用来存数字,而这31位数字可以存储的最大数字为2147483647。

从1970年开始计算,这31位的数字可以表示的秒数最多可以用到2038年01月19日03时14分07秒,当时间到达这个数字的时候系统将会出现问题,到时候数字不会自动增加,而是会变为-2147483647,而这串数字代表的时间是1901年12月13日20时45分52秒,这会导致很多的程序出现问题,甚至崩溃。

2038年问题不仅比千年虫更隐蔽,而且比之前千年虫问题更具有破坏力,因为千年虫问题只会导致应用层的程序出现问题,比如信用卡支付系统,或者管理系统。而2038这个bug,将会影响系统最底层的时间控制的功能。

要解决这个问题,最简单的方式是扩展Unix时间的长度,用64位数字来表示它。64位二进制数的实际可用位数是63位,最大表示到公历的UTC时间292,277,026,596年12月4日15时30分08秒. 如果那个时候人类文明还存在的话,公元纪年很可能已经因为太难用而被抛弃了. 理想的情况是到2038年,64位系统已经成为主流,从而避免特意去修正这个问题所需要的大量开销。否则,人们就必须把新的64位时间拆分成两部分并分别保存在两个变量里,这是一个麻烦而且效率低下的选择.

转载于:https://www.cnblogs.com/jycx/p/10790355.html

“千年虫问题”、“2038年问题”、什么是闰年相关推荐

  1. 千年虫与2038年问题

      1999年12月31日的夜晚,人类即将迎接第二个千禧之年的到来,大家喜气洋洋地等待新年钟声的敲响.然而有那么一批人此时此刻却紧张不已,因为过了十二点钟,世界各地的政府和金融系统可能会在一瞬间崩溃. ...

  2. 2038年问题 linux内核5.6,又一个“千年虫”问题!Linux Kernel 5.6已着手应对

    原标题:又一个"千年虫"问题!Linux Kernel 5.6已着手应对 新十年伊始,Linux Kernel 5.6 的开发者已经准备好着手解决将在下一个十年到来的 2038 年 ...

  3. 千年虫,2038年虫

    计算机2000年问题,又叫做"2000年病毒"."千年虫"."电脑千禧年问千年虫题"或"千年病毒".缩写为"Y ...

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

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

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

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

  6. 聊一聊2038年问题

    庚子年是中国传统的 60 甲子纪年法.擅长观测的古人很早就发现,每当年份执行到庚子这一年,自然灾害变多,突发事件频频,一些震动世界.影响安定的大事件也容易发生在这一年.而我们现在所处的 2020 年就 ...

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

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

  8. 洛谷 P2655 2038年问题

    P2655 2038年问题 题目描述 网络时代,机会与危机共存."千年虫"解决之后,会不会有新的"虫"出现?回答是肯定的,"2038年"就是 ...

  9. Linux 5.10将解决2038年问题

    Linux 5.10将解决2038年问题 新添功能以支持时间戳直至 2486 年_IT专家网

最新文章

  1. 故对于回调函数来说,在其内部使用 this 是不把稳的做法,解决方案可以在其调用时使用 call / apply / bind 显示绑定。
  2. angular Ng-Zrro树形控件 异步加载
  3. Arduino Yun的硬件——Arduino Yun快速入门教程
  4. 从东岳流体下载自带OpenFOAM的Vmware虚拟机(Ubuntu20.04+OpenFOAM),无法共享文件夹【终极解决方案】
  5. java学习笔记IO之字节输入输出流
  6. 【布莱克智讯之声公众号】 精彩图文分类导航
  7. Android的CheckBox(多选框)
  8. (34)VHDL实现T触发器
  9. OpenShift 4 - DevSecOps (2) - 修复 RHACS 发现的安全隐患
  10. python 开发工具_「干货」推荐一整套 Python 开发工具
  11. JAVA中GridBagLayout布局管理器应用详解
  12. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十九)ES6.2.2 安装Ik中文分词器
  13. [最小割] Luogu P4662 黑手党
  14. dp hp oracle 备份软件_HPDP备份软件设置
  15. php模仿一个开票系统,一个模仿oso的php论坛程序(之一)
  16. python 表格处理项目该如何分工_python 处理 Excel 表格
  17. 千年db服务器注册,千年服务器架设说明.doc
  18. 项目常用的合同类型,特点及报价方式
  19. Windows11/10 使用RDP远程桌面时提示 您的凭据不工作/登录没有成功可能的一种原因
  20. TeamView: 为了进一步增强安全性,在发起连接之前,我们希望您先验证您的账户

热门文章

  1. 我们为什么喷百度网盘?
  2. Go 每日一库之 gorilla/securecookie
  3. Cross-validation\cross_val_score\鲁棒性
  4. 股价跌到“1美元“退市线之下,昔日巨头四季教育成沧海一粟?
  5. 如何采用陷阱方式钩住API
  6. 三相LCL型并网逆变器电流闭环虚拟阻尼控制Simulink仿真
  7. 深度学习在美团点评的应用
  8. 同程旅游缓存系统设计:如何打造Redis时代的完美体系(含PPT)
  9. Struts2之配置文件中Action的详细配置
  10. 50%的转正率——瑞晟