时间戳转换
可以把时间戳(Unix timestamp)转换成时间,或者把时间日期转换成时间戳。
Current Unix Timestamp
0000000000
时间戳
北京时间
零件转换
Y
M
D
H
m
S
工具简介 Tool Introduction
时间戳 (Unix Timestamp) 是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数(不考虑闰秒),用于表示一个精确的物理时间点。
由于这种纯数字格式对人类并不友好,本工具提供 双向转换功能:既能将时间戳解析为可读日期,也能将日期反向编码为秒数,协助开发者高效处理时间数据。
// 双向转换示例
Live Data
Raw:
1736128303
Human:
2026-01-06 03:00:30
北京时间与夏令时历史
1986年至1991年,中国在全国范围实行了六年夏令时。每年从 4月中旬第一个星期日2时 到 9月中旬第一个星期日2时 结束。
夏令时实施期间,时钟向后调快一小时。该政策于 1992 年 4 月 5 日后停止实行。
JDK 时区维护
JDK 通过穷举并配置 Timezone Data 来感知政令干预。早期版本认为中国夏令时切换发生在 0时,新版本已修正为 2时。
Ref: JRE Software Timezone Versions
时间戳转普通时间 Timestamp to Human
JavaScript
new Date(timestamp * 1000).toLocaleString()MySQL
from_unixtime(timestamp)Python
import time; time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timestamp))Runtime Execution
获取当前时间戳 Get Current Timestamp
Standard: Unix Epoch (Seconds)
Swift Foundation
NSDate().timeIntervalSince1970Go
import "time"
int64(time.Now().Unix())Java JRE 8+
// Instant (Recommended)
Instant.now().getEpochSecond()C / C++
struct timeval tv;
gettimeofday(&tv, NULL);
// 秒: tv.tv_sec
// 毫秒: tv.tv_sec * 1000LL + tv.tv_usec / 1000JavaScript
Math.round(new Date() / 1000)Python Arrow lib
import arrow
arrow.utcnow().timestampPHP
time() // or Carbon::now()->timestampMySQL
SELECT unix_timestamp(now()).NET / C#
DateTimeOffset.UtcNow
.ToUnixTimeSeconds()Dart / Flutter
(DateTime.now().msSinceEpoch / 1000).truncate()Shell
date +%sLua
os.time()Cross-Platform Compatible
Precision: 1s
核心技巧 (Developer Tips)
毫秒 vs 秒
JS / Java 等通常使用 毫秒 (13位),而 Python / PHP 使用 秒 (10位)。对接前务必确认,否则时间会偏差数千年。
存储策略
数据库应始终存储 UTC / Timestamp 以保证数据的一致性。时区转换应仅发生在面向用户的 **UI 呈现层**。
开发者备忘录 (Memory Hook)
时区偏移陷阱: 处理 1986-1991 年的历史数据时,如果使用的时区库版本过低,转换结果可能会产生 1 小时的系统性误差。
推荐方案: 始终保持服务器 UTC 环境,仅在展示层根据 Asia/Shanghai 动态应用转换策略。