Unix 時間戳轉換器
Unix/Linux 時間戳與日期時間的雙向轉換工具,支援多個時區的轉換與對比。
當前時間
時間戳 轉 日期
轉換結果(自動)
日期 轉 時間戳
轉換結果(自動)
多時間戳日期時間轉換器
多時間戳日期時間轉換器
多日期時間戳轉換器
多日期時間戳轉換器
使用說明
本工具用於在不同情境下快速完成 Unix 時間戳與日期時間的雙向轉換,支援秒與毫秒精度,並可選擇目標時區進行對比顯示。提供單卡與多卡轉換器,輸入即轉換,切換時區自動刷新結果,同時內建近期時間範圍與常用時間跨度,滿足開發調試與日常換算需求。
工具功能特點
- 輸入即轉換,支援秒/毫秒時間戳自動識別
- 支援全域時區選擇與展示:本地、UTC、選定時區三種視圖
- 多轉換器卡片,便於批量比對
- 響應式介面與鍵盤友好,良好可存取性
- 內建近期時間範圍與常用時間跨度,複製即用
時間戳是什麼?
Unix 時間戳(Unix Timestamp)是自 1970-01-01 00:00:00 UTC(Unix Epoch)以來經過的總秒數或毫秒數。
時間戳是表示時間的數字,通常以秒或毫秒為單位。
時間戳的起始點是 1970年1月1日 00:00:00 UTC,這個時間被稱為 Unix 紀元。
時間戳最初用於 Unix 操作系統,所以常被稱為 Unix 時間戳。
時間戳在程式設計與網路通訊中廣泛使用,特別是在 Web 開發中。
常見精度:秒(如 1735689600)與 毫秒(如 1735689600000)。在表示時區相關的日期時間時,需要配合時區進行格式化展示。
常用時間戳(時長)
時間戳的 2038 問題
2038 問題指 32 位有符號整數儲存 Unix 時間戳(以秒為單位,自 1970-01-01 00:00:00 UTC 起算)在 2038-01-19 03:14:07 後溢位的問題。
因為 32 位有符號整數的範圍是 -2,147,483,648 到 2,147,483,647,而 2038-01-19 03:14:07 UTC 的時間戳為 2,147,483,647,因此超過該時間點後,32 位有符號整數將無法表示後續的時間戳。
受影響的多為使用 32 位 time_t 的舊系統或軟體。現代系統通常使用 64 位(例如以毫秒為單位的 64 位整數),不存在此問題。
建議使用 64 位時間戳,或使用支援大日期範圍的時間函式庫。
如何透過程式語言獲取/轉換時間戳
Math.floor(Date.now() / 1000); // seconds
Date.now(); // milliseconds
new Date(1735689600 * 1000).toISOString();
new Date('2025-01-01T00:00:00Z').getTime();
time(); // seconds
intval(microtime(true) * 1000); // milliseconds
date('Y-m-d H:i:s', 1735689600);
strtotime('2025-01-01 00:00:00');
import time
int(time.time()) # seconds
int(time.time() * 1000) # milliseconds
import datetime
datetime.datetime.utcfromtimestamp(1735689600).isoformat()
import datetime
int(datetime.datetime(2025,1,1,0,0,0,tzinfo=datetime.timezone.utc).timestamp())
import "time"
time.Now().Unix() // seconds
time.Now().UnixMilli() // milliseconds
import "time"
time.Unix(1735689600, 0).UTC().Format(time.RFC3339)
import "time"
ts := time.Date(2025,1,1,0,0,0,0,time.UTC).Unix()
use chrono::Utc;
let now = Utc::now();
let sec = now.timestamp(); // seconds i64
let ms = now.timestamp_millis(); // milliseconds i128
use chrono::{DateTime, NaiveDateTime, Utc};
let dt: DateTime = NaiveDateTime::from_timestamp_opt(1735689600, 0)
.unwrap()
.and_utc();
let iso = dt.to_rfc3339();
use chrono::DateTime;
let ts = DateTime::parse_from_rfc3339("2025-01-01T00:00:00Z")
.unwrap()
.timestamp();
-- MySQL / MariaDB
SELECT UNIX_TIMESTAMP();
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM NOW())::bigint;
-- SQLite
SELECT strftime('%s', 'now');
-- MySQL / MariaDB
SELECT FROM_UNIXTIME(1735689600);
-- PostgreSQL
SELECT to_timestamp(1735689600) AT TIME ZONE 'UTC';
-- SQLite
SELECT datetime(1735689600, 'unixepoch');
-- MySQL / MariaDB
SELECT UNIX_TIMESTAMP('2025-01-01 00:00:00');
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2025-01-01 00:00:00+00')::bigint;
-- SQLite
SELECT strftime('%s', '2025-01-01 00:00:00');