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');