Python Unix 時間戳程式碼片段
Python 範例,涵蓋當前 Unix 時間、時間戳到 datetime 的轉換、UTC 處理、毫秒,以及用標準函式庫格式化日期輸出。
import time
int(time.time())import time
int(time.time() * 1000)import datetime
datetime.datetime.fromtimestamp(1700000000)import datetime
datetime.datetime.utcfromtimestamp(1700000000)
# Python 3.2+:
datetime.datetime.fromtimestamp(1700000000, tz=datetime.timezone.utc)import datetime
dt = datetime.datetime.fromtimestamp(1700000000)
dt.strftime("%Y-%m-%d %H:%M:%S")import datetime
dt = datetime.datetime(2023, 11, 15, 6, 13, 20, tzinfo=datetime.timezone.utc)
int(dt.timestamp())Python 時間戳記基礎
Python 的 time.time() 以浮點數返回自 Unix 紀元以來的秒數。用 int() 包裹得到整數 Unix 秒,或在需要毫秒時乘以 1000。
帶時區的 datetime 輸出
使用 datetime.fromtimestamp(ts, tz=datetime.timezone.utc) 獲得明確的 UTC 輸出。在為日誌、API 或資料庫列產生值時,避免依賴伺服器的本地時區。
Python 生產注意事項
Python 讓建立 naive 和帶時區的 datetime 值都很容易,因此要有意識地決定哪一種會跨越系統邊界。對 API、排程工作和資料庫寫入使用帶時區的 UTC datetime。僅在顯示、報表或明確依賴本地日曆的業務規則中,才轉換為本地時區。
- 在指令稿和命令列工具中用 int(time.time()) 得到整數 Unix 秒
- 僅當接收系統期望毫秒時才用 int(time.time() * 1000)
- 為獲得可移植的輸出,使用 datetime.fromtimestamp(ts, tz=timezone.utc) 而非本地的 fromtimestamp
- 當你在日誌或 JSON 中需要可讀的 UTC 值時,使用 .isoformat()
Python 中的 datetime today:datetime.today() 與 datetime.now()
常見的 Python 搜尋「datetime today python」「today timestamp python」或「datetime now python utc」由 datetime 模組解答。datetime.today() 和 datetime.now() 幾乎相同——兩者都返回一個 naive 的本地 datetime。對於現代程式碼,優先使用 datetime.now(timezone.utc),它返回一個帶時區的 UTC 值,可安全轉換為 Unix 時間戳記。
- datetime.today() → 本地時區的 naive datetime(未附帶 tzinfo)
- datetime.now() → 除非傳入 tz 參數,否則與 today() 相同
- datetime.now(timezone.utc) → 帶時區的 UTC datetime(新程式碼首選)
- datetime.now(timezone.utc).timestamp() → 目前 Unix 紀元秒(float)
- date.today() → 今天的日期,無時間部分(date 物件,而非 datetime)
- int(time.time()) → 目前 Unix 秒(int)——最簡形式
- time.time_ns() → 目前紀元奈秒(Python 3.7+)
Python 中字串轉 datetime、datetime 轉字串
搜尋「string to datetime python」「py datetime to string」或「datetime to string」的 Python 使用者想要 strptime/strftime 或 datetime.fromisoformat()。對 ISO 8601 輸入使用 fromisoformat()(Python 3.7+;3.11 支援包含 UTC 偏移的完整 ISO 8601)。
- 字串轉 datetime(Python):datetime.fromisoformat('2024-03-15T14:30:00+00:00')——ISO 8601 首選
- 字串轉 datetime(Python,自訂格式):datetime.strptime('2024-03-15 14:30:00', '%Y-%m-%d %H:%M:%S')
- Py datetime to string / datetime to string:dt.isoformat() 返回 '2024-03-15T14:30:00+00:00'
- Py datetime to string(自訂格式):dt.strftime('%Y-%m-%d %H:%M:%S') 返回 '2024-03-15 14:30:00'
- ISO 8601 往返:datetime.fromisoformat(s).isoformat()——返回相同的字串
- 對於 Unix 時間戳記:dt.timestamp()(秒 float);整數秒用 int(dt.timestamp())
- Python convert string to date / convert string to date——ISO 8601 用 datetime.fromisoformat(s);自訂格式用 datetime.strptime(s, fmt)
- Python 僅日期輸出:date.fromisoformat('2024-03-15') 返回一個 date 物件(無時間)
FAQ
- time.time() 回傳整數嗎?
- 不。它以浮點值回傳秒。用 int() 包裹得到整數 Unix 秒,或在需要毫秒時先乘後取整。
- datetime 值應是 naive 還是帶時區?
- 對 API、資料庫和日誌使用帶時區的 UTC datetime 值。最好在系統邊界避免使用 naive datetime 值,因為它們的時區含義是隱式的。