常見問題
什麼是 Unix 時間戳?
Unix 時間戳(也稱為 POSIX 時間或 Epoch 時間)是一種追蹤時間的方式,它計算自 1970 年 1 月 1 日 00:00:00 UTC(Unix 紀元)以來經過的秒數。它被廣泛用於計算機系統和編程語言中,因為它提供了一種與時區無關的時間表示方式。
為什麼 Unix 時間從 1970 年開始?
1970 年 1 月 1 日被選為 Unix 紀元是因為歷史原因。當 Unix 操作系統在 1960 年代末和 1970 年代初開發時,開發者需要一個任意的起點。他們選擇了 1970 年 1 月 1 日午夜 UTC,因為它是一個方便的近期日期,不需要處理負時間戳,且使時間值保持在一個合理的數值範圍內。
秒和毫秒時間戳有什麼區別?
標準 Unix 時間戳以秒為單位,而毫秒時間戳(JavaScript 常用)包含額外的三位精度。例如,秒時間戳 1609459200 相當於毫秒時間戳 1609459200000。處理不同系統時,請檢查它們使用哪種格式以避免轉換錯誤。
什麼是 2038 年問題?
2038 年問題(也稱為 Y2K38 或 Unix 千年蟲)將在 2038 年 1 月 19 日發生,當 Unix 時間戳超過 32 位帶符號整數可表示的最大值(2,147,483,647)時發生。使用 32 位時間戳的系統將溢出並回繞到負數,可能導致系統故障。現代系統通過使用 64 位整數來解決這個問題。
如何在代碼中獲取當前 Unix 時間戳?
以下是在流行編程語言中獲取當前時間戳的方法:
// JavaScript
Math.floor(Date.now() / 1000)
# Python
import time
int(time.time())
// Java
System.currentTimeMillis() / 1000
// PHP
time()
// Go
time.Now().Unix()
// C#
DateTimeOffset.UtcNow.ToUnixTimeSeconds()如何將 Unix 時間戳轉換為可讀日期?
在 JavaScript 中,使用 new Date(timestamp * 1000)(乘以 1000 是因為 JavaScript 使用毫秒)。在 Python 中,使用 datetime.fromtimestamp(timestamp)。大多數編程語言都有類似的內建函數來進行這種轉換。
// JavaScript
new Date(1704067200 * 1000).toISOString()
// Result: '2024-01-01T00:00:00.000Z'
# Python
from datetime import datetime
datetime.fromtimestamp(1704067200)
// PHP
date('Y-m-d H:i:s', 1704067200)Unix 時間戳如何處理時區?
Unix 時間戳本質上是與時區無關的——它們始終代表 UTC 時間。當顯示或轉換時間戳時,您需要應用適當的時區偏移。這使得 Unix 時間戳非常適合在系統之間存儲和傳輸時間數據,無論用戶位於哪個時區。
Unix 時間戳的常見用途有哪些?
Unix 時間戳廣泛用於:數據庫記錄創建/修改時間、API 響應和請求超時、日誌文件時間記錄、緩存過期時間、會話管理、事件調度。它們的簡單性和與時區無關的特性使其成為編程中時間操作的首選。