工具库

时间戳转换

可以把时间戳(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().timeIntervalSince1970

Go

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 / 1000

JavaScript

Math.round(new Date() / 1000)

Python Arrow lib

import arrow arrow.utcnow().timestamp

PHP

time() // or Carbon::now()->timestamp

MySQL

SELECT unix_timestamp(now())

.NET / C#

DateTimeOffset.UtcNow
.ToUnixTimeSeconds()

Dart / Flutter

(DateTime.now().msSinceEpoch / 1000).truncate()

Shell

date +%s

Lua

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 动态应用转换策略。

全部评论