在分佈式系統中經常有linux時間戳作爲標記,linux時間與北京時間相互轉換變得非常重要,可以快速的定位時間和問題。
關於時間格式的解釋
UTC (Universal Time Coordinated,UTC)世界協調時間
CST (China Standard Time UTC+8:00)中國沿海時間(北京時間)
GMT (Greenwich Mean Time)格林威治標準時間:
1、分別以標準格式和時間戳來顯示當前時間
[root@linux ~]# date
2010年 08月 10日 星期二 03:39:21 CST
[root@linux ~]# date
2010年 08月 10日 星期二 03:39:21 CST
[root@linux ~]# date +%s
1281382775
2、顯示指定時間的時間戳
[root@linux ~]# date -d "2010-07-20 10:25:30" +%s
1279592730
[root@linux ~]# date -d "2010-07-20 10:25:30" +%s
1279592730
3、將時間戳轉換爲標準時間格式
方法1:使用date命令
[root@linux ~]# date -d "@1279592730"
2010年 07月 20日 星期二 10:25:30 CST
[root@linux ~]# date -d "1970-01-01 utc 1279592730 seconds"
2010年 07月 20日 星期二 10:25:30 CST
在線的轉換工具地址爲:http://tool.chinaz.com/Tools/unixtime.aspx
如何在不同編程語言中獲取現在的Unix時間戳(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 |
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" |
如何在不同編程語言中實現Unix時間戳(Unix timestamp) → 普通時間?
Java | String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(Unix timestamp * 1000)) |
JavaScript | 先 var unixTimestamp = new Date(Unix timestamp * 1000) 然後commonTime = unixTimestamp.toLocaleString() |
Linux | date -d @Unix timestamp |
MySQL | from_unixtime(Unix timestamp) |
Perl | 先 my $time = Unix timestamp 然後 my ($sec, $min, $hour, $day, $month, $year) = (localtime($time))[0,1,2,3,4,5,6] |
PHP | date('r', Unix timestamp) |
PostgreSQL | SELECT TIMESTAMP WITH TIME ZONE 'epoch' + Unix timestamp) * INTERVAL '1 second'; |
Python | 先 import time 然後 time.gmtime(Unix timestamp) |
Ruby | Time.at(Unix timestamp) |
SQL Server | DATEADD(s, Unix timestamp, '1970-01-01 00:00:00') |
VBScript / ASP | DateAdd("s", Unix timestamp, "01/01/1970 00:00:00") |
其他操作系統 (如果Perl被安裝在系統中) |
命令行狀態:perl -e "print scalar(localtime(Unix timestamp))" |
如何在不同編程語言中實現普通時間 → Unix時間戳(Unix timestamp)?
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) |
參考資料: