当前位置: 技术问答>linux和unix
Linux时间设置问题<非date命令的问题>
来源: 互联网 发布时间:2016-06-13
本文导语: 各位大虾: 搞Linux也有几年了,今天突然发现一个时间问题。 FC 7 X86_32下,时间设置范围只能是1970-2037年。 这个问题是我手误设置时间才发现的。 date 062216303008.30 直接提示。 date: 无效的日期 “062216303008.30...
各位大虾:
搞Linux也有几年了,今天突然发现一个时间问题。
FC 7 X86_32下,时间设置范围只能是1970-2037年。
这个问题是我手误设置时间才发现的。
date 062216303008.30
直接提示。
date: 无效的日期 “062216303008.30“
从理论上分析,一点问题都没有。
于是,我将时间设置少一点 设置为 date 062216302008.30
直接就成功。
看来时间有限制, 我于是就开始测试, 发现范围是1970 - 2037
windows下却没有这个限制,
我在一个路由器板子上测试, 发现其时间范围为1900 - 3000, 看来也是有限制。
不知道,这个时间范围限制从哪里定义,或者说,为什么有这个限制,
搞Linux也有几年了,今天突然发现一个时间问题。
FC 7 X86_32下,时间设置范围只能是1970-2037年。
这个问题是我手误设置时间才发现的。
date 062216303008.30
直接提示。
date: 无效的日期 “062216303008.30“
从理论上分析,一点问题都没有。
于是,我将时间设置少一点 设置为 date 062216302008.30
直接就成功。
看来时间有限制, 我于是就开始测试, 发现范围是1970 - 2037
windows下却没有这个限制,
我在一个路由器板子上测试, 发现其时间范围为1900 - 3000, 看来也是有限制。
不知道,这个时间范围限制从哪里定义,或者说,为什么有这个限制,
|
2008年1月19日星期六是一个值得注意的日期,它标志了Y2K38 bug 30年倒计时开始。Y2K38是指Unix系统时间使用的32位整数将在2038年溢出。从1970年1月1日开始,到2038年超过2^31,确切的时间是世界标准时2038年1月19日星期二凌晨03:14:07
|
32位OS的long int为4字节
*nix使用一个 long int来保存时间--从1970年一月一号0点开始到现在的秒数。
这个数据是以32位存储的,第一位是符号位,其余的31位用来存数字,而这31位数字可以存储的最大数字为2147483647
从1970年开始计算,这31位的数字可以表示的秒数最多可以用到2038年,当时间到达这个数字的时候系统将会出现问题,到时候数字不会自动增加,而是会变为-2147483647,而这串数字代表的时间是1901年12月13号,这会导致很多的程序出现问题,甚至崩溃。
这个可比千年虫问题更具有破坏力,因为千年虫问题只会导致应用层的程序出现问题,比如信用卡支付系统,或者管理系统。而2038这个bug,将会影响系统最底层的时间控制的功能.
Raju Mathur,GNU 和 Linux的顾问兼Linux Delhi Users Group的斑竹,说:“我认为到时候首当其冲的将会是嵌入式领域,因为这个领域内的软件更新不是很频繁。流程控制系统,手机,游戏平台,电话的交换机等等这类的设备将会是最大的受害者。”
但是他后来补充道,以现在技术革新的速度,到时候估计不会有人还会使用32位的系统。
*nix使用一个 long int来保存时间--从1970年一月一号0点开始到现在的秒数。
这个数据是以32位存储的,第一位是符号位,其余的31位用来存数字,而这31位数字可以存储的最大数字为2147483647
从1970年开始计算,这31位的数字可以表示的秒数最多可以用到2038年,当时间到达这个数字的时候系统将会出现问题,到时候数字不会自动增加,而是会变为-2147483647,而这串数字代表的时间是1901年12月13号,这会导致很多的程序出现问题,甚至崩溃。
这个可比千年虫问题更具有破坏力,因为千年虫问题只会导致应用层的程序出现问题,比如信用卡支付系统,或者管理系统。而2038这个bug,将会影响系统最底层的时间控制的功能.
Raju Mathur,GNU 和 Linux的顾问兼Linux Delhi Users Group的斑竹,说:“我认为到时候首当其冲的将会是嵌入式领域,因为这个领域内的软件更新不是很频繁。流程控制系统,手机,游戏平台,电话的交换机等等这类的设备将会是最大的受害者。”
但是他后来补充道,以现在技术革新的速度,到时候估计不会有人还会使用32位的系统。
|
帮顶
|
1970年开始我就知道,2038这回事。。。我就没听过了。。。。