Unix 时间戳转换器

Unix/Linux 时间戳与日期时间的双向转换工具,可基于多个不同时区转换对比。

当前时间

当前时间戳(秒)
1766507946
当前时间
2025-12-23 16:39:06

时间戳 转 日期

转换结果(自动)

日期 转 时间戳

转换结果(自动)

多时间戳日期时间转换器

多时间戳日期时间转换器

多日期时间戳转换器

多日期时间戳转换器

使用说明

本工具用于在不同场景下快速完成 Unix 时间戳与日期时间的双向转换,支持秒与毫秒精度,并可选择目标时区进行对比显示。提供单卡与多卡转换器,输入即转换,切换时区自动刷新结果,同时内置近期时间范围与常用时间跨度,满足开发调试与日常换算需求。

自动识别: 工具会自动识别输入的是秒级时间戳(10位)还是毫秒级时间戳(13位)
时区: 显示本地时间和 UTC 时间,方便不同时区的使用

工具功能特点

  • 输入即转换,支持秒/毫秒时间戳自动识别
  • 支持全局时区选择与展示:本地、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)。在表示时区相关的日期时间时,需要配合时区进行格式化展示。

近期时间戳(基于全局时区)

常用时间戳(时长)

1 分钟
60 秒
1 小时
3600 秒
1 天
86400 秒
1 周
604800 秒
1 月(按 30 天)
2592000 秒
1 年(按 365 天)
31536000 秒

时间戳的 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 位时间戳,或使用支持大日期范围的时间库。

如何通过编程语言获取/转换时间戳

JavaScript
获取当前时间戳
Math.floor(Date.now() / 1000); // seconds
Date.now(); // milliseconds
时间戳 → 日期
new Date(1735689600 * 1000).toISOString();
日期 → 时间戳
new Date('2025-01-01T00:00:00Z').getTime();
PHP
获取当前时间戳
time();                // seconds
intval(microtime(true) * 1000); // milliseconds
时间戳 → 日期
date('Y-m-d H:i:s', 1735689600);
日期 → 时间戳
strtotime('2025-01-01 00:00:00');
Python
获取当前时间戳
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())
Go
获取当前时间戳
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()
Rust
获取当前时间戳
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();
SQL
获取当前时间戳
-- 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');