记录一下Linux/Unix上的时间处理:
UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。
目前大部份的UNIX系统都是用32位元来记录时间,正值表示为1970以后,负值则表示1970年以前。我们可以很简单地计算出其时间领域:
2^31/86400(s) = 24855.13481(天) ~ 68.0958(年)
1970+68.0958 = 2038.0958
1970-68.0958 = 1901.9042
时间领域为[1901.9042,2038.0958]。
准确的时间为2038年一月十八日星期一晚上十点十四分七秒。那一刻,时间将会转为负数,变成1901年十二月十三日黑色星期五下午三点四十五分五十二秒,然後Jason就会跑出来用斧头砸掉您的电脑。
这就是所谓的UNIX 2038 BUG,或者您也可戏称为Jason hatchet bug。在大部份的UNIX上,并没有所谓Y2K问题,不过都有2038年问题。
在一些64位元的平台上,例如Digital Alpha、SGI、Sparc等等,则用64位元来表示时间。
2^63/86400 ~ 1E14(天) ~ 2.92E11(年)
大约是292亿年。
因此,使用64位元的电脑可能会有Armageddon bug的问题。届时位於猎户座旋臂的太阳,已经是黑矮星或暗黑物质,猎户座旋臂大概也已经被重力波震断,银河系大概则已经变成小型似星体了。
虽然许多人认为UNIX的2038年问题会随着科技的进步,而将电脑逐步汰换成64位元电脑,因此无须担心。但我个人相信,在2038年,依然会有许多状况出现。因为,就事实而言,目前许多UNIX系统都有足够的能力服役到2038年而毫无问题。因此,如果有意添购电脑主机,而且有预期会使用到那个时候,最好是选购64位元电脑,确认只有世界末日问题(除非您想要把资料流传给下一个宇宙,那就要另当别论了)。
分享到:
相关推荐
《Linux/Unix系统编程手册》是一本深受程序员和系统管理员喜爱的经典著作,它详细阐述了在Linux和Unix操作系统上进行低级编程的各种技术。附录中的代码是书中的实例,旨在帮助读者深入理解和掌握这些系统编程的核心...
在Linux/Unix操作系统中...总之,掌握Linux/Unix下的时间处理命令能够提高工作效率,特别是对于系统管理员和后端开发者来说。通过深入理解和实践,你可以更有效地操作和解析时间数据,无论是调试程序还是处理日常任务。
标题中的"Ehst.rar_Linux/Unix编程_anybody42u"表明这是一个关于...通过研究这些文件,开发者可以学习到如何在Linux/Unix环境中编写能够运行在手机上的日历应用,掌握时间处理、用户界面设计以及跨平台编程的相关技巧。
综上所述,Michael Kerrisk的这本《The Linux Programming Interface》不仅是一本全面覆盖Linux与UNIX系统编程接口的权威手册,更因其对系统编程的深入讲解和大量实例代码而显得弥足珍贵,是一本系统编程领域内值得...
《Linux/UNIX系统编程手册》是一本专为程序员和系统管理员设计的专业指南,由Michael Kerrisk撰写,并由人民邮电出版社出版。这本书以其详尽的代码示例为特色,深入探讨了Linux和UNIX操作系统的底层机制,是学习系统...
《UNIX环境高级编程》是一本深入探讨Linux/Unix系统编程的经典著作,对于任何希望在这些操作系统上进行系统级编程的开发者来说,都是不可或缺的参考书。这本书详细介绍了如何利用UNIX/Linux系统的API和工具来构建...
3. **FTP工具**:FTP(File Transfer Protocol)是一种标准网络协议,用于在互联网上进行文件传输,是Windows与远程Linux/Unix服务器间传输文件的常用方式。 4. **编译与安装**:在Linux/Unix环境中,源码包通常需要...
这本书是针对那些希望掌握系统编程技能的开发者,无论是在Linux还是其他UNIX平台上工作的程序员都能从中受益。书中包含了大量的系统调用、库函数以及实用的程序示例,涵盖了广泛的编程主题。 本书的特点在于其详尽...
在Linux/Unix环境中,C++性能统计是优化代码的关键步骤,它可以帮助开发者识别程序的瓶颈,从而提升程序的运行效率。本代码库提供了一种封装好的性能统计工具,旨在简化性能分析过程,其接口设计清晰易用。虽然直接...
标题中的“jefqr-radian-complexity.rar”可能是一个包含特定项目的压缩文件,而“Linux/Unix编程_complexity_信道估计”则表明这个压缩包的内容与Linux或Unix操作系统平台上的编程工作有关,特别是涉及到信道估计的...
《Linux/Unix系统编程手册》是一本权威且深入的书籍,涵盖了Linux和Unix操作系统的系统级编程技术。这本书的源代码提供了实践操作的实例,帮助读者深入理解如何在这些系统中编写高效的程序。源代码的获取是直接从...
在Linux/Unix环境中,`make`命令是一个至关重要的编译工具,它极大地简化了大型项目的构建和维护。本文将深入探讨`make`及其配套的`makefile`,这两个工具是项目自动化编译的核心。 首先,`make`命令的用途在于自动...
Linux/Unix编程与TDMA(时分多址)分配技术是网络通信领域中的重要概念,尤其是在移动无线自组织网络(Ad Hoc Network)的场景下。动态TDMA协议是一种优化了资源分配策略的通信协议,它允许网络节点更加灵活地管理和...
标题中的"channels-gederaae-can.rar_Linux/Unix编程_MIMO channels_finally8cq_"表明这是一个关于Linux或Unix平台下的编程项目,专注于MIMO(Multiple-Input Multiple-Output)信道模拟。"finally8cq"可能是项目的...
《Linux/Unix系统编程手册》是一本权威的书籍,涵盖了操作系统接口、进程管理、文件操作、网络编程等众多核心主题。书中的代码示例旨在帮助读者深入理解这些概念,并能够实际应用到自己的程序中。以下将对这些关键...
掌握了上述命令后,你将能够更加自如地在Linux或Unix系统中处理各种格式的压缩文件。无论是日常文件管理还是开发过程中对代码库的操作,这些命令都能为你提供极大的便利。建议将这些命令保存在个人笔记本中,以备...
通过学习和分析这些源代码,开发者可以深入理解如何在Linux和Unix环境下进行网络编程,包括如何建立和管理套接字连接,处理并发连接,实现高效的错误处理,以及利用进程间通信机制优化网络应用。同时,这也是提升...
1. **跨平台支持**:Jexus的主要优势之一就是其跨平台能力,能够在Linux和Unix系统上无缝运行ASP.NET应用,打破了.NET Framework主要依赖Windows系统的局限性,使得.NET开发人员可以在更广泛的环境中部署他们的应用...