转自:http://hi.baidu.com/dugucloud/blog/item/b903ba803e5192c59123d99d.html

千年虫何来?

在上个世纪,许多计算机系统只用二进制7~8位数(足够十进制二位数使用)表示年份,比如说1986年就表示成86,1998年表示成98。一旦遇到输出年份的时候,系统就会使用类似于如下C++语言所表示的方法(year变量表示计算机系统中的年份,outstream表示输出流):

outstream << "19" << year << "年";

或者这样(不输出前面的“19”,也许是刚才那个网站用的方法):

outstream << year << "年";

如果用这种方法表示下去,2000年时year变量的值就会变为100,那么实际输出时就成了“19100年”或者“100年”了!显然,刚才那个网站出的就是这种问题。有些系统自作聪明地检查到了越界,只取十进制后两位,year的值就成0了!

Unix的时间表示方法

而在Unix操作系统,时间是用二进制32位整数表示的(其中有一位是符号位,也就是说实际有效的是31位),具体是1970年1月1日0时0分0秒到现在的秒数。根据这个秒数可以推算出现在的日期和时间,也就没必要单独为年、月、日、时、分、秒单独设一个变量来存储了。这样设计的系统底层,只要上层开发者不偷懒就行了;就算偷懒,修改程序的代价也小得多。按照这种计时法,最长可以用到2038年1月19日,到了那时候怎么办呢?

不过在64位Unix系统上,时间是用二进制64位整数表示的,可以使用将近3000亿年!随着64位个人电脑(内存通常大于4GB)的普及,“2038年问题”就会迎刃而解。而真正有待解决的,可能是一些嵌入式Linux系统吧。

千年虫及UNIX时间相关推荐

  1. Go 学习笔记(48)— Go 标准库之 time (获取时/分/秒的单位值、标准时间和Unix时间转换、字符串时间和Time类型转换、时区转换、时间的加减/休眠)

    1. 概要说明 import "time" time 包提供了时间的显示和测量用的函数.日历的计算采用的是公历. Go 提供以下几种时间类型: 时间点 Time 时间段 Durat ...

  2. Unix 时间表示方式与windows时间表示方式相互转换的解决办法

    Unix时间时间表示方式与windows时间表示方式相互转换的解决办法. 简单描述问题:(以上问题仅限在VC++6.0或更低的开发环境下实现.当然VS2005,VS2008中可能有更好的解决办法,但是 ...

  3. Unix时间戳 POSIX时间 Unix时间

    时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数,也被称为 Unix 时间戳(Unix Timestamp). Unix时间戳(Unix timestamp),或称Uni ...

  4. vb.net 同时给多个属性赋值_Python尚学堂高淇|1721时间表示unix时间点毫秒微秒time模块浮点数自动转换强制转换增强赋值运算符...

    017浮点数-自动转换-强制转换-增强赋值运算符浮点数称为float用a*b^10形式表示的科学计数法,比如:3.14,314E-2或者314e-2这些数字在内存当中也是按照科学计数法存储. > ...

  5. linux 时间戳 微妙,unix时间点_毫秒和微妙_time模块

    时间的表示 计算机中时间的表示是从"1970 年 1 月 1 日 00:00:00"开始,以毫秒(1/1000 秒) 进行计算.我们也把 1970 年这个时刻成为"uni ...

  6. C#之Unix时间和北京时间互转

    Unix时间起始时间为1970年1月1日0时0分0秒 北京时间起始时间为1970年1月1日8时0分0秒 北京时间转Unix时间如下: DateTime dtUnix = new DateTime(19 ...

  7. python时间函数纳秒_在Python中以秒和纳秒获取POSIX / Unix时间?

    我一直在努力找到一种方法来获取自1970-01-01 00:00:00 UTC以来的时间,以秒为单位,在python中以纳秒为单位,我找不到能给我正确精度的任何东西. 我尝试过使用时间模块,但是精度只 ...

  8. UNIX时间与GPS时间

    Unix时间起始于:1970年1月01日 GPS时间起始于:1980年1月06日 如果不考虑GPS跳秒的影响,两个时间系统的差值为315964800.目前GPS多次跳秒,计算时务必考虑此影响. UNI ...

  9. php gmt文本转时间,PHP 使用gmdate将一个UNIX 时间格式化成 GMT 文本的简单示例

    对PHP gmdate –将一个UNIX 时间格式化成 GMT 文本感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 语法如下: /** * PHP gmdate –将一个UNIX 时间格 ...

最新文章

  1. 职校电子计算机专业高考分数线,2015年重庆高考分数线公布:一本文572理573
  2. CloudCC CRM:物联网必将成为CRM的推动力
  3. 架构师,是否需要写代码?
  4. 使用this调用已有的有参构造函数_JavaScript 中的 this 的几种使用场景
  5. eclipse中 将java项目转换为web项目
  6. Objective-C 常用代码
  7. 部门经常加班,该怎么办
  8. 【路径规划】基于matlab动态多群粒子群算法局部搜索路径规划【含Matlab源码 448期】
  9. R语言Γ(gamma)分布
  10. 美团Android开发工程师岗位职能要求,薪资翻倍
  11. 支教笔记 我在泸定的那十天
  12. CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/curre
  13. C++ __builtin_函数
  14. 焦虑症应该怎么办?这六个缓解方法建议试试
  15. 【读书笔记】《学会提问》——受用一生的批判性思维
  16. Linux(Ubuntu)系统如何安装Python
  17. mysql计算折纸_折纸飞机实验报告.doc
  18. ITM_SendChar
  19. Android 科大讯飞语音SDK集成步骤
  20. 半导体器件基础07:三极管基础(3)

热门文章

  1. GStreamer- (缓冲)Buffering
  2. python实现微信自动发信息_Python实现企业微信机器人每天定时发消息实例
  3. Annotation type expected
  4. python-37-python微服务框架Nameko
  5. torch-0.4.1-cp36-cp36m-win_amd64.whl is not a supported wheel on this platform.
  6. 只有在日本便利店才能吃到的『独家美食』
  7. java计算机毕业设计共享充电宝管理系统(附源码、数据库)
  8. 如何应用知识管理,成就高绩效项目?
  9. Xshell 命令总结
  10. “微软让我损失了两亿美金!”