我發現,我在本站公布的文章,url 最后一段都是 134 開頭的一串數字。一開始并沒在意,僅僅想當然以為是程序隨機生成的。
?
昨天跟程序作者交談的過程中無意問起,他說這是代表時間的。剛才訪問 GoAgent 項目時發現,其作者 Phus 也是使用這樣的
134 開頭的數字作為時間戳,于是立馬搜索了一下,才明確這樣的時間表示方法叫做 Unix 時間戳,英文寫作 Unix Timestamp,
Unix epoch,Unix time 或 POSIX time。
Unix 時間戳是為了紀念 Unix 系統 1970 年生日,而將格林尼治時間 1970 年 1 月 1 日 0 點 0 分 0 秒 定義為整數 0,此后
每過一秒則該整數加 1,而 1970 年 1 月 1 日曾經的時間則定義為負值。因此 Unix 時間與 Windows 時間換算的方法也非常
簡單,知道了 Unix 時間定義的 0 值到如今過了多少秒,再折算為分鐘、小時、天、月、年,以 1970 年 1 月 1 日 00:00:00
為基準累加,就換算出了當前的 Windows 時間了。而 Windows 時間換算 Unix 時間則正好相反。
另外,b3log 中文章 url 所展示的 Unix 時間戳精確到毫秒,所以若想正確換算為 Windows 時間,須要去掉后三位才干正確
換算。如上圖所看到的,http://www.syshut.com/articles/2012/08/22/1345641185168.html,將紅色部分換算為 Windows
時間則為北京時間的 2012 年8 月 22 日 21:13:05。
互聯網上有非常多這兩種時間的在線互換算工具,隨便一搜就一大堆,比如:http://tool.chinaz.com/Tools/unixtime.aspx。
剛剛在谷歌找到一款離線的時間換算工具 Unix Timestamp Converter,界面設計得不錯,并且能夠選擇要換算的時區,使用
十分方便。
下載鏈接:http://file.syshut.com/u/90761860/Compressed/Unix Timestamp Converter.7z
?
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" |
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))" |
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) |
?
轉載地址:
http://www.syshut.com/articles/2012/08/27/1346074224645.html
http://tool.chinaz.com/Tools/unixtime.aspx