logo
GeekFormat

Unix 時間戳轉換

目前 Unix 時間戳
1784571548
2026-07-21 02:19:08 (UTC)

程式碼範例

JavaScript
// 取得目前時間戳 new Date(時間戳轉日期).toLocaleString()
Python
import time time.time() # 取得目前時間戳 time.ctime(1800000000) # 時間戳轉日期
Go
import "time" time.Now().Unix() // 取得目前時間戳 time.Unix(1800000000, 0).String()
Bash
# 取得目前時間戳 date +%s # 時間戳轉日期 date -d @1800000000

Unix 時間戳是自 1970 年 1 月 1 日 00:00:00 UTC 以來經過的秒數(不計閏秒)。大多數 Unix 系統將時間戳儲存為 32 位元有符號整數,在 2038 年 1 月 19 日會發生溢位(2038 年問題)。

免費線上 Unix 時間戳轉換工具,支援秒/毫秒/微秒雙向互轉,自動辨識時間戳單位,UTC 與本地時區一鍵切換,內建多語言程式碼範例,打開即用適合開發除錯與日誌排查。

相關推薦

什麼是 Unix 時間戳?

Unix 時間戳(Unix Timestamp),也叫 Epoch Time、POSIX Time,是一種用數字表示時間的方式:從協調世界時(UTC)1970年1月1日 00:00:00 起到某一時刻所經過的總秒數(不計算閏秒)。起點 1970-01-01 00:00:00 UTC 被稱為「Unix 紀元」(Unix Epoch),此時的時間戳為0。

時間戳的最大優點是與時區無關——同一時刻在全球任何地方產生的時間戳都是同一個數字,不存在時區轉換問題。因此它被廣泛應用於:資料庫記錄的建立/更新時間、分散式系統的日誌追蹤(Trace/Span 時間)、API 介面的時間參數、JWT Token 的過期時間、快取的過期時間(TTL)、檔案系統的修改時間等。

不同程式語言和系統對時間戳精度處理不同:C/Unix/Python 預設使用秒級(10位),JavaScript/Java 使用毫秒級(13位),部分高精度系統(如金融交易、科學計算)使用微秒級(16位)甚至奈秒級(19位)。本工具覆蓋最常用的秒、毫秒、微秒三種精度。

適用場景

  • 開發除錯時將日誌中的時間戳轉換為可讀日期時間,快速定位問題發生時刻
  • 介面接軌時對照請求/回應中的時間戳欄位,確認時間是否正確傳遞
  • 資料庫查詢時將業務時間轉換為時間戳,用於 SQL 時間範圍條件
  • 伺服器維運時對比 UTC 時間戳與本地時間,排查跨時區部署的時間相關問題
  • 編寫指令碼時快速複製各語言取得時間戳的程式碼片段,無需查閱文件
  • 將歷史日期(1970年前)或未來日期轉為時間戳,用於測試邊界場景

使用方法

  1. 頁面頂部顯示即時跳動的目前 Unix 時間戳,可直接點擊複製
  2. 要將時間戳轉為日期:在「時間戳→日期」標籤頁輸入時間戳,工具自動辨識單位(秒/毫秒/微秒)
  3. 選擇 UTC 或本地時區,轉換結果即時顯示,可點擊複製按鈕複製日期字串
  4. 要將日期轉為時間戳:切換到「日期→時間戳」標籤頁,在年/月/日/時/分/秒輸入框填入目標時間
  5. 選擇時區後秒級時間戳即時顯示,一鍵複製用於程式碼或查詢

功能特點

  • 自動辨識單位:輸入時間戳自動判斷是秒/毫秒/微秒,無需手動選擇,貼上即用
  • 三級精度支援:秒(10位)、毫秒(13位)、微秒(16位)全覆蓋,滿足不同系統和語言需求
  • UTC/本地時區切換:伺服器日誌用 UTC,業務時間用本地,一鍵切換對照排查
  • 逐欄位日期輸入:年/月/日/時/分/秒獨立輸入框,支援日期轉時間戳,無需記憶日期格式
  • 即時時間戳顯示:頁面頂部即時跳動目前秒級時間戳及 UTC 日期,一鍵複製
  • 多語言程式碼片段:內建 JavaScript/Python/Go/Bash 取得和轉換時間戳程式碼,一鍵複製
  • 支援負數時間戳:可轉換1920年至2100年範圍內的任意日期,涵蓋歷史和未來時間
  • 純前端計算:所有轉換在瀏覽器本地完成,時間戳不上傳伺服器,安全可靠

程式碼範例

JavaScript 取得和轉換時間戳

javascript

瀏覽器和 Node.js 中取得目前秒級/毫秒級時間戳,以及將時間戳轉換為本地可讀時間的常用方法。

// 取得目前秒級時間戳
const tsSec = Math.floor(Date.now() / 1000);
console.log(tsSec); // 例如 1700000000

// 取得目前毫秒級時間戳
const tsMs = Date.now();
console.log(tsMs); // 例如 1700000000000

// 秒級時間戳轉本地可讀時間
const date = new Date(tsSec * 1000);
console.log(date.toLocaleString('zh-TW'));
// "2023/11/15 上午6:13:20"

// 毫秒級時間戳轉 ISO 格式
console.log(new Date(tsMs).toISOString());
// "2023-11-14T22:13:20.000Z"

Python 時間戳處理

python

使用 Python 標準函式庫 time 和 datetime 模組取得和轉換時間戳,處理時區轉換。

import time
from datetime import datetime, timezone

# 取得目前秒級時間戳
ts = int(time.time())
print(ts)  # 1700000000

# 時間戳轉本地時間字串
print(time.ctime(ts))
# 'Wed Nov 15 06:13:20 2023'

# 時間戳轉格式化時間
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(ts)))
# '2023-11-15 06:13:20'

# 時間戳轉 UTC 時間
print(datetime.fromtimestamp(ts, tz=timezone.utc))
# 2023-11-14 22:13:20+00:00

Linux/macOS 指令列操作時間戳

bash

在 Shell 中取得目前時間戳和轉換時間戳的常用指令,注意 Linux 和 macOS 的 date 指令參數有差異。

# 取得目前秒級時間戳(Linux/macOS 通用)
date +%s

# 時間戳轉日期(Linux GNU date)
date -d @1700000000
# "Wed Nov 15 06:13:20 CST 2023"

# 時間戳轉日期(macOS BSD date)
date -r 1700000000

# 時間戳轉 UTC 日期(Linux)
date -u -d @1700000000
# "Tue Nov 14 22:13:20 UTC 2023"

# 指定格式輸出
date -d @1700000000 '+%Y-%m-%d %H:%M:%S'

常見問題

什麼是 Unix 時間戳?

Unix 時間戳(Unix Timestamp,又稱 Epoch Time、POSIX Time)是從協調世界時(UTC)1970年1月1日00:00:00起至某一時刻的總秒數(不考慮閏秒)。例如 1700000000 對應 2023-11-14 22:13:20 UTC。它不受時區影響,在全球任何地方產生的同一時刻的時間戳都是相同的,因此被廣泛用於跨系統時間記錄、日誌追蹤、介面傳參與資料庫儲存。

秒級、毫秒級、微秒級時間戳怎麼區分?

按位數區分:10位數字是秒級(精度到秒,如1700000000),13位數字是毫秒級(精度到千分之一秒,如1700000000000),16位數字是微秒級(精度到百萬分之一秒,如1700000000000000)。本工具會自動辨識你輸入的時間戳位數,無需手動選擇單位——輸入後即可自動判斷並轉換。如果你貼上的時間戳前後有空格,工具也會自動修剪後正確辨識。

為什麼日誌裡的時間戳和本地時間差了8小時?

這是因為 Unix 時間戳本身是 UTC 時區的,而台灣使用 UTC+8 時區。如果直接按本地時區解析 UTC 時間戳,就會產生時差。本工具提供 UTC 和本地時區兩種切換選項:排查伺服器日誌(通常用 UTC)時選 UTC,看本地業務時間時選本地時區,一鍵切換對照。

JavaScript 中如何取得和轉換時間戳?

取得目前秒級時間戳用 `Math.floor(Date.now() / 1000)`,毫秒級用 `Date.now()`;將時間戳轉可讀時間用 `new Date(ts * 1000).toLocaleString()`(秒級需乘1000,毫秒級直接傳入)。工具頁面底部內建了 JavaScript、Python、Go、Bash 等常用語言的程式碼片段,可直接複製使用。

時間戳可以是負數嗎?代表什麼?

可以。負數時間戳表示1970年1月1日之前的時間,例如 -1 對應 1969-12-31 23:59:59 UTC。本工具支援輸入負數時間戳,轉換範圍涵蓋1920年到2100年,滿足歷史日期和未來日期的轉換需求。

2038年問題是什麼?會影響使用嗎?

2038年問題(Year 2038 Problem)指使用32位元有號整數儲存秒級時間戳的系統,在2038年1月19日03:14:07 UTC後會溢位導致時間變為負數,引發系統錯誤。現代系統已普遍使用64位元整數(可表示到2920億年後),JavaScript 使用64位元浮點數儲存時間戳(精確到毫秒可安全表示到285616年),本工具在瀏覽器中執行,不受2038年問題影響。

為什麼線上轉換比命令列更方便?

命令列(如 Linux 的 date 指令)需要記住參數格式,跨平台參數不一致(macOS 的 date 和 Linux 的 date 參數差異很大)。本工具打開即用,自動辨識單位,提供視覺化日期輸入框(年/月/日/時/分/秒逐欄位輸入,無需記憶日期格式),支援時區一鍵切換,還內建多語言程式碼範例,在瀏覽器中即可完成轉換,無需切換終端機。

術語表

Unix 時間戳
從 UTC 1970年1月1日00:00:00起經過的秒數,10位數字,與時區無關,全球統一。
Epoch Time
Unix 時間戳的別名,指從 Unix 紀元(1970-01-01 UTC)起算的時間。
秒級時間戳
精度到秒的時間戳,10位數字(如1700000000),是 Unix/Python/C 等語言的預設精度。
毫秒級時間戳
精度到千分之一秒的時間戳,13位數字(如1700000000000),JavaScript/Java 的預設精度。
微秒級時間戳
精度到百萬分之一秒的時間戳,16位數字(如1700000000000000),用於高精度系統。
UTC
協調世界時(Coordinated Universal Time),全球時間標準,是時區計算的基準,與格林威治標準時間(GMT)基本一致。
時區偏移
本地時間與 UTC 的差值,如台灣標準時間是 UTC+8(比 UTC 快8小時),美國東部是 UTC-5(標準時間)。
ISO 8601
國際標準化組織的日期時間表示格式,如2024-01-15T08:30:00+08:00,是 API 傳參的標準格式。
2038年問題
32位元有號整數儲存秒級時間戳在2038年1月19日溢位的問題,64位元系統和 JavaScript 不受影響。

常用時間單位換算表

時間單位秒數舉例說明
1分鐘60短時間快取、介面逾時
1小時3,600Token 短期有效期、會話逾時
1天86,400每日統計、日報資料
1週604,800週報週期、Cookie 有效期
1個月(30.44天)2,629,743月度統計、訂閱計費週期
1年(365.24天)31,556,926年度資料、JWT 長期 Token

各程式語言時間戳取得與轉換

語言取得目前時間戳(秒)時間戳轉可讀時間
JavaScriptMath.floor(Date.now()/1000)new Date(ts*1000).toLocaleString()
Pythonimport time; int(time.time())import time; time.ctime(ts)
JavaSystem.currentTimeMillis()/1000new Date(ts*1000L).toString()
Gotime.Now().Unix()time.Unix(ts, 0).String()
PHPtime()date('Y-m-d H:i:s', ts)
MySQLSELECT UNIX_TIMESTAMP()SELECT FROM_UNIXTIME(ts)
Bash (Linux)date +%sdate -d @ts
Bash (macOS)date +%sdate -r ts

Authoritative References