时间戳转日期工具
常见时间戳示例
以下是一些常见的 Unix 时间戳及其对应的日期时间(UTC):
| 时间戳 | 单位 | 对应日期时间 (UTC) | 说明 |
|---|---|---|---|
| 0 | 秒 | 1970-01-01 00:00:00 | Unix 纪元起始点 |
| 946684800 | 秒 | 2000-01-01 00:00:00 | 千禧年 |
| 1700000000 | 秒 | 2023-11-14 22:13:20 | 17 亿秒里程碑 |
| 1700000000000 | 毫秒 | 2023-11-14 22:13:20 | 等同于 1700000000 秒(毫秒格式) |
| 2147483647 | 秒 | 2038-01-19 03:14:07 | 32 位整数最大值(2038 年问题) |
各语言时间戳转日期示例
JavaScript
JavaScript
// 秒级时间戳转日期
const timestamp = 1700000000;
const date = new Date(timestamp * 1000);
console.log(date.toISOString());
// 输出: 2023-11-14T22:13:20.000Z
// 毫秒级时间戳转日期
const timestampMs = 1700000000000;
const date2 = new Date(timestampMs);
console.log(date2.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' }));
// 输出: 2023/11/15 06:13:20
Python
Python
import datetime
# 秒级时间戳转日期
timestamp = 1700000000
dt = datetime.datetime.fromtimestamp(timestamp)
print(dt.strftime('%Y-%m-%d %H:%M:%S'))
# 输出: 2023-11-15 06:13:20 (依系统时区)
# 转换为 UTC
dt_utc = datetime.datetime.utcfromtimestamp(timestamp)
print(dt_utc.strftime('%Y-%m-%d %H:%M:%S'))
# 输出: 2023-11-14 22:13:20
PHP
PHP
// 秒级时间戳转日期
$timestamp = 1700000000;
echo date('Y-m-d H:i:s', $timestamp);
// 输出: 2023-11-14 22:13:20 (依服务器时区)
// 指定时区
$dt = new DateTime("@$timestamp");
$dt->setTimezone(new DateTimeZone('Asia/Shanghai'));
echo $dt->format('Y-m-d H:i:s');
// 输出: 2023-11-15 06:13:20
MySQL
MySQL
-- 时间戳转日期
SELECT FROM_UNIXTIME(1700000000);
-- 输出: 2023-11-15 06:13:20 (依数据库时区)
-- 指定格式
SELECT FROM_UNIXTIME(1700000000, '%Y-%m-%d %H:%i:%s');
-- 输出: 2023-11-15 06:13:20
-- 转换为 UTC
SELECT CONVERT_TZ(FROM_UNIXTIME(1700000000), @@session.time_zone, '+00:00');
-- 输出: 2023-11-14 22:13:20
常见问题 FAQ
为什么转换结果差了 8 小时?
Unix 时间戳本身是以 UTC(协调世界时)为基准的。中国位于 UTC+8 时区,因此如果你将时间戳转换为 UTC 时间,结果会比本地时间早 8 小时。这不是错误,只是时区差异。请在工具中选择 Asia/Shanghai 时区即可显示本地时间。
10 位和 13 位时间戳有什么区别?
10 位时间戳是以「秒」为单位,例如 1700000000;13 位时间戳是以「毫秒」为单位,例如 1700000000000。两者表示的是相同的时间点,区别在于精度。JavaScript 的 Date.now() 返回的是毫秒级时间戳,而大多数后端语言(如 PHP、Python)默认使用秒级时间戳。
时间戳的起始时间是什么?
Unix 时间戳的起始时间(又称为 Unix 纪元,Unix Epoch)是 1970 年 1 月 1 日 00:00:00 UTC。时间戳值为 0 就代表这个时间点。所有的 Unix 时间戳都是从这个时刻开始计算经过的秒数(或毫秒数)。
如何判断输入的是秒还是毫秒?
最简单的方法是看数字的位数:10 位数字通常是秒级时间戳(范围约从 1970 到 2286 年),13 位数字通常是毫秒级时间戳。例如 1700000000 是秒,1700000000000 是毫秒。本工具提供单位选择功能,你可以手动选择「秒」或「毫秒」来确保转换正确。
负数时间戳代表什么?
负数时间戳表示 1970 年 1 月 1 日之前的时间。例如 -86400 代表 1969 年 12 月 31 日 00:00:00 UTC。某些系统和程序语言支持负数时间戳,但并非所有工具都能正确处理。