时间戳转换
一个简单易用的时间戳与日期转换工具,支持时间戳转日期和日期转时间戳
介绍
简介
时间戳,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数(不考虑闰秒),用于表示一个时间点。然而,这种格式对于人类阅读并不友好,因此需要转换成可读的日期和时间格式。这个工具能够将时间戳快速转换为人类可读的日期时间格式,同时也支持反向转换,即将日期时间转换为时间戳。
北京时间
夏令时
1986年至1991年,中华人民共和国在全国范围实行了六年夏令时,每年从4月中旬的第一个星期日2时整(北京时间)到9月中旬第一个星期日的凌晨2时整(北京夏令时)。除1986年因是实行夏令时的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行。夏令时实施期间,将时间向后调快一小时。1992年4月5日后不再实行。
JDK 的夏令时问题
夏令时的起止,是政令对日历描述的人为干预。每年均可能发生变化,JDK 如何感知这个规律并在系统上加以体现的?穷举所有变化,并配置在 JDK 中。详见: Timezone Data Versions in the JRE Software
不同版本下 Asia/Shanghai 时区夏令时起始时间不同,早期维护者认为中国标准时间的夏令时切换发生在0时,而后来又经证明发生在2时,新版本 JDK 及时修正了这个问题。
在不同编程语言中获取当前时间戳(Unix timestamp)
Java | time |
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()) |
Python | 先 import time 然后 time.time() |
Ruby |
获取Unix时间戳:Time.now 或 Time.new 显示Unix时间戳:Time.now.to_i |
Go | 先 import time 然后 int32(time.Now().Unix()) |
SQL Server | SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()) |
Unix / Linux | date +%s |
VBScript / ASP | DateDiff("s", "01/01/1970 00:00:00", Now()) |
其他操作系统 (如果Perl被安装在系统中) |
命令行状态:perl -e "print time" |
在不同编程语言中实现时间转换成时间戳
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, month, day, 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) |