一、介绍
时间戳:一份数据在特定时间点存在的可验证的数据。
Unix时间戳(英文为Unix epoch, Unix time, POSIX time
或 Unix timestamp
),是从1970年1月1日(UTC/GMT的午夜)开始到现在所经过的秒数(格林威治时间1970年01月01日00时00分00秒、北京时间1970年01月01日08时00分00秒),不考虑闰秒。
UNIX时间戳的 0 按照 ISO 8601 规范为 :1970-01-01T00:00:00Z.
一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。
最小值(秒):0 始于(北京时间):1970-01-01 08:00:00
纪元时间 ,都是基于格林威治标准时间的,即GMT时间。
标准时间应该是1970-01-01 00:00:00,中国处于东八区,所以时间会比标准时间早8小时
二、转换工具
UNIX 时间戳转换工具地址 : https://c.runoob.com/front-end/852
三、获取Unix时间戳的指令
编程语言 | 指令 |
---|---|
Java | System.currentTimeMillis() / 1000 [3] |
JavaScript | Math.round(new Date().getTime()/1000) getTime()返回数值的单位是毫秒 |
Microsoft .NET / C# | epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 |
MySQL | SELECT unix_timestamp(now()) |
Perl | time |
PHP | time() |
PostgreSQL | SELECT extract(epoch FROM now()) |
Golang | time.now().Unix() |
Python | 先 import time 然后 time.time() 返回1476929706.5320001 可以 int(time.time()) |
Ruby | 获取Unix时间戳:Time.now 或 Time.new 显示Unix时间戳:Time.now.to_i |
SQL Server | SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()) |
Unix /Linux/类UNIX/OS X | date %s |
VBScript / ASP | DateDiff("s", "01/01/1970 08:00:00", Now()) |
lua | os.time() 返回时间戳 |
FreeSWITCH | fs_cli > strepoch 或者: fs_cli > eval ${strepoch()} 或者: (在 freeswitch里面,获取linux系统的时间戳) fs_cli > system date %s |
其他操作系统 (如果Perl被安装在系统中) | 命令行状态:perl -e "print time" |
四、普通时间转Unix时间戳
编程语言 | 指令 |
---|---|
Java | long epoch = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00"); |
JavaScript | var commonTime = new Date(Date.UTC(year, month - 1, day, hour, minute, second)) |
MySQL | SELECT unix_timestamp(time) 时间格式: YYYY-MM-DD HH:MM:SS 或 YYMMDD 或 YYYYMMDD |
Perl | 先 use Time::Local 然后 my $time = timelocal($sec, $min, $hour, $day, $month, $year); |
PHP | mktime(hour, minute, second, day, month, year) |
PostgreSQL | SELECT extract(epoch FROM date('YYYY-MM-DD HH:MM:SS')); |
Python | 先 import time 然后 int(time.mktime(time.strptime('YYYY-MM-DD HH:MM:SS', '%Y-%m-%d %H:%M:%S'))) |
Ruby | Time.local(year, month, day, hour, minute, second) |
SQL Server | SELECT DATEDIFF(s, '1970-01-01 00:00:00', time) |
Unix / Linux | date %s -d"Jan 1, 1970 00:00:01" |
VBScript / ASP | DateDiff("s", "01/01/1970 00:00:00", time) |
五、扩展
闰秒
科学上有两种时间计量系统:基于地球自转的天文测量而得出的"世界时"
和以原子振荡周期确定的"原子时"
。"世界时"
由于地球自转的不稳定(由地球物质分布不均匀和其它星球的摄动力等引起的)会带来时间的差异,"原子时"
(一种较恒定的时制,由原子钟得出)则是相对恒定不变的。这两种时间尺度速率上的差异,一般来说一至二年会差大约1秒
时间。
1971年国际计量大会通过决议:使用"协调世界时"
来计量时间。当"协调世界时"
和"世界时"
之差超过0.9秒时,国际地球自转服务组织(IERS)就负责对"协调世界时"
拨快或拨慢1秒
,这就是闰秒
。
协调世界时
(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。
协调世界时
是以原子时
秒长为基础,在时刻上尽量接近于世界时
的一种时间计量系统。