-
unix時間戳
鎖定
UNIX時間戳的 0 按照 ISO 8601 規範為 :1970-01-01T00:00:00Z.
一個小時表示為UNIX時間戳格式為:3600秒;一天表示為UNIX時間戳為86400秒,閏秒不計算。
在大多數的 Unix 系統中 Unix 時間戳存儲為 32 位,這樣會引發 2038 年問題或 Y2038。
- 中文名
- Unix 時間戳
- 外文名
- Unix epoch, Unix time, POSIX time, Unix timestamp
- 系 統
- Unix 內核系統
- 開始時間
- 1970年1月1日
unix時間戳對照表
時間 | 秒 |
1 分鐘 | 60 |
1 小時 | 3600 |
1 天 | 86400 |
1 周 | 604800 |
1 月 (30.44 天) | 2629743 |
1年 (365.24 天) | 31556736 |
unix時間戳編程調用
編程語言 | 指令 |
Java | |
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() 返回時間戳 |
fs_cli > strepoch 或者: fs_cli > eval ${strepoch()} 或者: (在 freeswitch裏面,獲取linux系統的時間戳) fs_cli > system date +%s | |
其他操作系統 (如果Perl被安裝在系統中) | 命令行狀態:perl -e "print time" |
unix時間戳相關漏洞
64 位 iOS 系統負時間值問題。
假設一種情況,我原來是北京時區,假設將時間設置到了1970年1月1日0點0時0秒,那麼我將這個時間轉換為UTC時間,公式:北京時間=GMT+8=UTC+8,那麼UTC時間則為1969年12月31日16時0分0秒。這樣就會出現時間負值,即時間迴歸bug觸發,系統啓動卡在Kernel階段,時間錯誤,無法繼續進行啓動。
那麼既然時間不能往前調,好奇的朋友可能會往後調,當我們往後調的時候會發現iOS系統可以設置的最大時間是2038年1月1日,並不能再往後設置了。為什麼時間只能調到這裏?
我們瞭解一下在32位系統中,time_t是長度為32位的,有符號整數(signed int)類型。首個二進制位是符號位,用來儲存正負。正數則為1970/1/1以後的時間,負數反之;其餘的31位用來記數。當時間到達2038年1月19日3時14分08秒(北京時間2038年1月19日11時14分08秒)時,數值位全部向前進1,導致符號位被置1,其餘31位為0。介時,將出現“時間迴歸”的情況,系統時間變為1901年12月13日20時45分52秒,系統將會出現錯誤。
1970年1月1日就像病毒一樣在世界蔓延開來了,不僅很多國外網友中招,在國內有很多 iPhone 用户也都嘗試了。筆者剛剛看到關於1970年變磚的視頻後,內心是不相信的,覺得這個視頻後半段開機畫面是被剪掉了,然後筆者就手賤的進行了嘗試,把時間設置成1970年1月1日,手機關機重啓真的停留在白蘋果了,變“磚頭”了,真是應了這句話“不作就不會死”。
- 參考資料
-
- 1. 什麼是Unix時間戳?(轉載) .cnblogs.com[引用日期2016-06-24]
- 2. 蘋果“1970事件”是什麼在搞鬼 .新浪.2016-02-23[引用日期2016-06-24]
- 3. System (Java Platform SE 8 ) .Java Platform SE 8[引用日期2022-07-11]