UNIX 时间戳总结
UNIX 时间戳
延伸阅读:Y2K38 错误
2038年问题又叫Unix千年臭虫或Y2K38错误。在时间值以带符号的32位整数来存储或计算的数据存储情况下,这个错误就有可能引发问题。
可以用Unix带符号的32位整数时间格式来表示的最大时间是 2038年1月19日03:14:07UTC(2038-01-19T03:14:07Z),这是自 1970-01-01T00:00:00Z 之后过了 2147483647 秒,值的边界如下:
时间 | 时间戳 | 二进制字面量 |
---|---|---|
1970-01-01T00:00:00Z | 0 | 00000000 00000000 00000000 00000000 |
2038-01-19T03:14:07Z | 2^31-1, 2147483647 | 01111111 11111111 11111111 11111111 |
测试代码:
// 0
long a = 0;
// 2^31-1, 2147483647
long b = Integer.MAX_VALUE;// 1970-01-01T00:00:00.000Z
Instant.ofEpochSecond(a).atZone(ZoneOffset.of("-00:00")).toLocalDateTime()
// 2038-01-19T03:14:07.000Z
Instant.ofEpochSecond(b).atZone(ZoneOffset.of("-00:00")).toLocalDateTime()
过了最大时间后,由于整数溢出,时间值将作为负数来存储,系统会将日期读为1901年12月13日,而不是2038年1月19日。
用简单的语言来说,Unix机器最终将会耗尽存储空间来列举秒数。所以,到那一天,使用标准时间库的C程序会开始出现日期问题。你可以在维基百科上详细的相关内容(https://en.wikipedia.org/wiki/Year_2038_problem)。
下面这个动画显示了2038年错误将如何重置日期:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bIYPNCEB-1612353563376)(https://qidawu.github.io/img/distribute/Y2K38.GIF)]
资料来源:维基百科
目前,2038年错误没有什么通行的解决方案。如果对用于存储时间值的time_t数据类型的定义进行更改,依赖带符号的32位time_t整数性质的应用程序就会出现一些代码兼容性问题。假设time_t的类型被更改为不带符号的32位整数,那将加大最新的时间限制。但是,这会对由负整数表示的1970年之前的日期造成混乱。
使用64位架构的操作系统和程序使用64位time_t整数。使用带符号的64位值可以将日期延长至今后的2920亿年。
已有人提出了许多建议,包括以带符号的64位整数来存储自某个时间点(1970年1月1日或2000年1月1日)以来的毫秒/微秒,以获得至少30万年的时间范围。其他建议包括用新的库重新编译程序,等等。这方面的工作正在开展之中;据专家们声称,2038年问题解决起来应该不难。
参考
UNIX时间 - 维基百科
https://time.is/UTC
UNIX 时间戳总结相关推荐
- 日期与unix时间戳之间的转换C++实现
之前在https://blog.csdn.net/fengbingchun/article/details/107023645 中介绍过gmtime和localtime的区别,这里介绍下日期与Unix ...
- 将毫秒转换_Matlab将Unix时间戳转为可读日期
Unix时间戳有很多在线转换的工具,比如: Unix时间戳(Unix timestamp)转换工具 - 站长工具tool.chinaz.com时间戳(Unix timestamp)转换工具tool ...
- asp实现UNIX时间戳功能
asp实现UNIX时间戳功能 utime = DateDiff("s", "1970-1-1 8:00:00", Now()) 注:为什么不是"19 ...
- c语言 北京时间转换utc时间_mysql之unix时间戳和正常时间格式之间的转换
转载:https://www.cnblogs.com/longzhongren/p/4596278.html 函数:FROM_UNIXTIME 作用:将MYSQL中以INT(11)存储的时间以&quo ...
- android 时间戳转换成日期_Matlab将Unix时间戳转为可读日期
Unix时间戳有很多在线转换的工具,比如: Unix时间戳(Unix timestamp)转换工具 - 站长工具tool.chinaz.com时间戳(Unix timestamp)转换工具tool ...
- js时间格式化函数,支持Unix时间戳
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 如何将Unix时间戳转换为DateTime,反之亦然?
有此示例代码,但随后开始谈论毫秒/纳秒问题. 自M#的Unix时代以来 ,同样的问题在MSDN上,以秒为单位 . 到目前为止,这是我得到的: public Double CreatedEpoch {g ...
- DateTime时间格式转换为Unix时间戳格式
// DateTime时间格式转换为Unix时间戳格式 public int ConvertDateTimeInt(System.DateTime time) { System.DateTime st ...
- python unix时间戳格式化输出_python正常时间和unix时间戳相互转换的方法
本文实例讲述了python正常时间和unix时间戳相互转换的方法.分享给大家供大家参考.具体分析如下: 这段代码可以用来转换常规时间格式为unix时间戳,也可以将unix时间戳转换回来, 例如:133 ...
- mysql UNIX时间戳与日期的相互转换
UNIX时间戳转换为日期用函数FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 日期转换为UNIX时间戳用函数UNIX_TIMES*****P() S ...
最新文章
- 每日一皮:为什么程序猿是最适合谈恋爱的人
- 基本函数依赖和候选键_5G 通信候选波形的设计和评测解决方案
- input的值提交不上
- 如何修改eclipse里面Android虚拟机的存放路径
- 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - D. 质数
- 2.IDA-数据显示窗口(反汇编窗口、函数窗口、十六进制窗口)
- 【SPFA】桐人的约会
- [19/03/16-星期六] 常用类_Date时间类DateFormat类
- 操作系统之I/O管理:2、I/O软件层次结构
- 华为张熙伟:鲲鹏计算产业已汇聚30万开发者
- NIO(一)——缓冲区Buffer
- (第三场) C Shuffle Cards 【STL_rope || splay】
- 【MyBatis】MyBatis找不到mapper文件
- 【Missing separate debuginfos, use: debuginfo-install glibc-2.17-222.el7.x86_64】 解决方法
- 网卡加到linux网桥,[Linux] ubuntu 14 通过网桥将无线网络桥接给有线网卡
- 本博客基于Handsome主题的一些小修改教程
- git format-patch命令介绍
- sql 判断分钟是偶数数据_mssql sqlserver判断一个整数是否为奇数偶数的方法分享...
- 计算机专业用苹果哪款笔记本,最好的苹果笔记本电脑是哪款
- 【SugerTangYL】UART串口通信 Verilog
热门文章
- Trinity简介(1)--用于无参考基因组的转录组de novo组装
- 推荐两款mac管理应用软件
- 可视化-three.js 城市 波浪特效 城市 扫光 掠过效果
- 360旗下APP再遭苹果下架 巨头频遭“一刀切”
- 仕德伟 php 漏洞,网络爱心接力救助绝症女孩——仕德伟网络市场总监朱恋尽“微博”之力...
- 如何设置局域网静态ip地址?
- 隐藏微信小程序左上角的返回或home按钮 wx.hideHomeButton
- java 狗带风波_狗狗风波
- OmniPlan-Mac上使用的项目管理软件
- SEO免费外链发布工具