Unix时间戳
Unix时间戳
Unix时间戳(英文为Unix epoch, Unix time, POSIX time
或 Unix 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天的总秒数是31536000
,2147483647/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。
协调世界时
是以原子时
秒长为基础,在时刻上尽量接近于世界时
的一种时间计量系统。