Unix时间戳

Posted 程序员爱学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix时间戳相关的知识,希望对你有一定的参考价值。

Unix时间戳

Unix时间戳(英文为Unix epoch, Unix time, POSIX timeUnix timestamp),是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒[1]

为什么从1970年1月1日开始?

最懒的解释:UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。

深入解释:最初计算机操作系统是32位,而时间也是用32位表示。32位能表示的最大值是2147483647。另外1年365天的总秒数是315360002147483647/31536000 = 68.1,也就是说32位能表示的最长时间是68年,而实际上到2038年01月19日03时14分07秒,便会到达最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000 00000000,也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。

所以,因为用32位来表示时间的最大间隔是68年,而最早出现的UNIX操作系统考虑到计算机产生的年代和应用的时限综合取了1970年1月1日作为UNIX TIME的纪元时间(开始时间),至于时间回归的现象相信随着64位操作系统的产生逐渐得到解决,因为用64位操作系统可以表示到292,277,026,596年12月4日15时30分08秒

java中获取当前Unix时间戳的方法

//方法 一
System.currentTimeMillis()/1000;
//方法 二
Calendar.getInstance().getTimeInMillis()/1000;
//方法 三
new Date().getTime()/1000;

mysql获取当前Unix时间戳的方法

select unix_timestamp(now()) 

备注:

1.闰秒
科学上有两种时间计量系统:基于地球自转的天文测量而得出的"世界时"和以原子振荡周期确定的"原子时""世界时"由于地球自转的不稳定(由地球物质分布不均匀和其它星球的摄动力等引起的)会带来时间的差异,"原子时"(一种较恒定的时制,由原子钟得出)则是相对恒定不变的。这两种时间尺度速率上的差异,一般来说一至二年会差大约1秒时间。

1971年国际计量大会通过决议:使用"协调世界时"来计量时间。当"协调世界时""世界时"之差超过0.9秒时,国际地球自转服务组织(IERS)就负责对"协调世界时"拨快或拨慢1秒,这就是闰秒

协调世界时(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。

协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。


以上是关于Unix时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何绘制 unix 时间戳

从unix时间戳获取GMT日期[重复]

如何在 kotlin 中将纪元时间戳转换为 unix 十六进制时间戳?

Java 如何获得 Unix 时间戳

Android 将 unix 时间戳设置为 DatePicker

使用 C++ 获取 Unix 时间戳