时间戳,2038年计算机要面临的问题(代码演示)

        本章介绍时间戳,时间戳的定义、时间戳问题、危机详细分析、计算机2038年要面临的问题、代码模拟以及回顾2000年千年虫危机。

目录

1.  时间戳的定义

2.  时间戳危机

3.  详细分析

4.  代码演示

5.  解决办法

6.  前例-2000年千年虫

7.  结尾


1.  时间戳的定义

        时间戳,定义为从经度0°的英国格林尼治1970年1月1日0时0分0秒起算,到现在所经过的秒数。因为中国在东八区,比格林尼治早8个小时,当格林尼治0点时,中国已经是8点了,所以对于中国地区,时间戳就是从北京时间1970年1月1日8时0分0秒起算,到现在所经过的秒数。时间戳的定义解决了计算机无法计算时间的问题。

2.  时间戳危机

        在60年代,但是计算机存储器的成本很高,普遍采用了32位的存储器,许多设备和程序都使用32位存储器,至今,正是现在所说的电脑内核32位64位。随着1997年 “千年虫” 的的警钟拉起,人们逐渐意识到位数的不足导致的众多问题。

        时间戳是有 “耗尽” 的一天的,按照32位的时间戳存储结构,它能正确表示的秒数最大为2147483647(2的31次方,第一位是符号位),即到英国格林尼治时间 2038年1月19日03:14:07秒,也就是北京时间 2038年1月19日11:14:07秒。届时所有32位的设备和32位的程序都会受到严重的影响。

3.  详细分析

        这个问题的出现是由C语言引起的,而C语言为python的母语。在C语言中,用time_t (整数int型)来表示日期和时间,它以32位数据进行存储,其中最高位为符号位(0表示正数,1表示负数),剩余的31位用来存储数字,所以32位仅能表示2的31次方=2147483648秒,对于时间戳,一旦超过2147483648秒,即英国格林尼治时间 2038年1月19日03:14:07秒,计算机时间便出现问题。

整型溢出 变成负数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值