🕐
← 返回教學列表

如何將 Unix 時間戳轉換為人類可讀日期

· 標籤: unix-timestamp, conversion, date-conversion, timezone, epoch-converter

為什麼要轉換 Unix 時間戳?

Unix 時間戳對機器來說是理想的——一個簡單的整數,緊湊、不含歧義且容易排序。但對人類而言,1785292800 在被轉換為日曆日期和時間之前毫無意義。無論您是在除錯日誌檔案、分析資料庫記錄還是讀取 API 回應,知道如何快速轉換時間戳都是一項基本技能。

方法一:使用我們的線上 Unix 時間戳轉換器

最快且最可靠的方法是使用專用的轉換工具。

我們的 Unix 時間戳轉換器 接受秒級和毫秒級的時間戳,會自動偵測精度,並同時顯示多個時區的結果。您也可以反方向操作——輸入人類可讀的日期以獲取對應的 Unix 時間戳。

這種方法適合需要快速一次性轉換且不想碰命令列的情況。

方法二:使用 Linux 命令列(date 命令)

如果您可以存取 Linux 或 macOS 終端機,date 命令是您的最佳幫手。

將時間戳轉換為人類可讀日期

# 在 GNU Linux 上(大多數發行版)
date -d @1785292800

# 指定自訂格式
date -d @1785292800 +"%Y-%m-%d %H:%M:%S"
# 輸出:2026-07-19 00:00:00

# 附帶時區
TZ="America/New_York" date -d @1785292800
# 輸出:Sun Jul 19 00:00:00 EDT 2026

在 macOS(BSD date)上,語法略有不同:

# 在 macOS 上
date -r 1785292800

# 附帶自訂格式
date -r 1785292800 +"%Y-%m-%d %H:%M:%S"

將日期轉換為 Unix 時間戳

# 在 GNU Linux 上
date -d "2026-07-19 00:00:00" +%s

# 在 macOS 上
date -j -f "%Y-%m-%d %H:%M:%S" "2026-07-19 00:00:00" +%s

方法三:手動計算

雖然您幾乎不需要手動計算,但理解其中的數學原理能幫助您了解系統的運作方式。

計算公式

秒數 = (年 - 1970) × 31536000 + (月偏移) × 86400 + 日 × 86400 + 時 × 3600 + 分 × 60 + 秒

棘手的部分是計算閏年。年份如果能被 4 整除就是閏年,但能被 100 整除而不能被 400 整除的世紀年除外。

快速心算近似值

  • 86,400 秒 = 1 天
  • 604,800 秒 = 1 週
  • 約 31,536,000 秒 = 1 個平年
  • 約 31,622,400 秒 = 1 個閏年

若要粗略估算,您可以計算 timestamp / 86400 來得到自紀元以來的天數,然後將這些天數加到 1970 年 1 月 1 日。

方法四:使用程式語言

每種主流程式語言都有內建的時間戳轉換函數。以下是最常用的幾種:

JavaScript(瀏覽器或 Node.js)

// 時間戳轉日期(JavaScript 使用毫秒)
const timestamp = 1785292800;
const date = new Date(timestamp * 1000);
console.log(date.toISOString());
// 輸出:2026-07-19T00:00:00.000Z

// 日期轉時間戳
const ts = Math.floor(new Date("2026-07-19").getTime() / 1000);
console.log(ts);
// 輸出:1785292800

Python

from datetime import datetime

# 時間戳轉日期
dt = datetime.utcfromtimestamp(1785292800)
print(dt.isoformat())
# 輸出:2026-07-19T00:00:00

# 時區感知(Python 3.9+)
from zoneinfo import ZoneInfo
dt_tz = datetime.fromtimestamp(1785292800, tz=ZoneInfo("America/New_York"))
print(dt_tz.isoformat())
# 輸出:2026-07-19T00:00:00-04:00

# 日期轉時間戳
import time
ts = time.mktime(datetime(2026, 7, 19).timetuple())
print(ts)

PHP

<?php
// 時間戳轉日期
echo date("Y-m-d H:i:s", 1785292800);
// 輸出:2026-07-19 00:00:00

// 日期轉時間戳
echo strtotime("2026-07-19 00:00:00");
// 輸出:1785292800

方法五:使用試算表軟體

Google 試算表

使用公式 =DATE(1970,1,1) + A1 / 86400,其中 A1 包含時間戳。將結果儲存格格式設為日期。

Microsoft Excel

=DATE(1970,1,1) + A1 / 86400

在 Windows Excel 上,您可能需要:

=(A1 / 86400) + DATE(1970,1,1)

需要注意的邊界情況

秒與毫秒

這是最常見的錯誤。如果將毫秒值(例如 1785292800000)傳給期望秒的函數,您會得到大約 56,000 年後的日期。

如何判斷:

  • 如果數字是 10 位數,很可能是秒
  • 如果數字是 13 位數,很可能是毫秒
  • 某些系統也使用微秒(16 位數)或奈秒(19 位數)

負數時間戳(1970 年之前的日期)

Unix 時間戳可以使用負數表示紀元之前的日期:

date -d @-126230400
# 輸出:Tue Dec 31 00:00:00 -1969

並非所有轉換工具都能正確處理負數時間戳。我們的線上轉換器可以。

閏秒

Unix 時間在設計上忽略閏秒。即使在插入閏秒期間,Unix 時間戳也永遠不會顯示 :59:60。這意味著時間戳與原子時間之間存在一個很小(目前為 27 秒)但會持續擴大的偏差。

總結

| 方法 | 最適合 | |--------|----------| | 線上轉換器(/linux-timestamp) | 快速、一次性轉換 | | date 命令 | 終端機使用者和腳本 | | 手動計算 | 理解其運作原理 | | 程式語言 | 自動化和應用程式 | | 試算表 | 資料分析 |

使用我們的 Unix 時間戳轉換器 進行即時、準確的轉換,並自動偵測時區。