时间戳转换器

免费网页版 Unix 时间戳转换器,支持毫秒与秒级时间戳在线转日期。无需安装,即开即用。

北京时间(UTC+8)
--:--:--
----年--月--日 星期-
当前 Unix 时间戳
--
--

时间戳转日期时间

转换结果
--
--

日期转时间戳

Unix 时间戳
--
--

各编程语言时间戳操作示例

// 获取当前时间戳(毫秒)
const millis = Date.now();              // 13位,例如:1704067200000
const seconds = Math.floor(Date.now() / 1000);  // 10位,例如:1704067200

// 时间戳转日期
const date = new Date(1704067200000);
console.log(date.toLocaleString('zh-CN'));  // 2024/1/1 08:00:00

// 日期转时间戳
const ts = new Date('2024-01-01T00:00:00').getTime();
console.log(ts);  // 1704067200000
import time
from datetime import datetime

# 获取当前时间戳
seconds = time.time()           # 10位秒级:1704067200.0
millis = int(time.time() * 1000)  # 13位毫秒级

# 时间戳转日期(本地时间)
local_time = time.localtime(1704067200)
formatted = time.strftime('%Y-%m-%d %H:%M:%S', local_time)
print(formatted)  # 2024-01-01 08:00:00

# 日期转时间戳
dt = datetime.strptime('2024-01-01 08:00:00', '%Y-%m-%d %H:%M:%S')
ts = int(dt.timestamp())
print(ts)  # 1704067200
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

// 获取当前时间戳
long millis = System.currentTimeMillis();  // 13位
long seconds = Instant.now().getEpochSecond();  // 10位

// 时间戳转日期
String formatted = Instant.ofEpochMilli(1704067200000L)
    .atZone(ZoneId.of("Asia/Shanghai"))
    .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// 结果:2024-01-01 08:00:00

// 日期转时间戳
long ts = Instant.parse("2024-01-01T00:00:00Z").toEpochMilli();
package main

import (
    "fmt"
    "time"
)

func main() {
    // 获取当前时间戳
    millis := time.Now().UnixMilli()  // 13位
    seconds := time.Now().Unix()      // 10位

    // 时间戳转日期
    t := time.Unix(1704067200, 0)
    fmt.Println(t.Format("2006-01-02 15:04:05"))
    // 输出:2024-01-01 08:00:00

    // 日期转时间戳
    loc, _ := time.LoadLocation("Asia/Shanghai")
    dt, _ := time.ParseInLocation("2006-01-02 15:04:05", "2024-01-01 08:00:00", loc)
    fmt.Println(dt.Unix())  // 1704067200
}
<?php
// 获取当前时间戳
$seconds = time();               // 10位秒级
$millis = round(microtime(true) * 1000);  // 13位毫秒级

// 时间戳转日期
$date = date('Y-m-d H:i:s', 1704067200);
echo $date;  // 2024-01-01 08:00:00

// 日期转时间戳
$ts = strtotime('2024-01-01 08:00:00');
echo $ts;  // 1704067200

// DateTime 方式(推荐)
$dt = new DateTime('2024-01-01 08:00:00', new DateTimeZone('Asia/Shanghai'));
echo $dt->getTimestamp();  // 1704067200
?>
using System;

// 获取当前时间戳
long millis = DateTimeOffset.Now.ToUnixTimeMilliseconds();  // 13位
long seconds = DateTimeOffset.Now.ToUnixTimeSeconds();      // 10位

// 时间戳转日期
DateTime date = DateTimeOffset.FromUnixTimeSeconds(1704067200)
    .LocalDateTime;
Console.WriteLine(date.ToString("yyyy-MM-dd HH:mm:ss"));
// 输出:2024-01-01 08:00:00

// 日期转时间戳
DateTime dt = new DateTime(2024, 1, 1, 8, 0, 0, DateTimeKind.Local);
long ts = new DateTimeOffset(dt).ToUnixTimeSeconds();
Console.WriteLine(ts);  // 1704067200
# 获取当前时间戳
date +%s          # 10位秒级:1704067200
date +%s%3N     # 13位毫秒级:1704067200000

# 时间戳转日期(Linux/macOS)
date -d @1704067200 '+%Y-%m-%d %H:%M:%S'     # GNU date
date -r 1704067200 '+%Y-%m-%d %H:%M:%S'      # macOS date
# 输出:2024-01-01 08:00:00

# 日期转时间戳
date -d '2024-01-01 08:00:00' +%s   # GNU date
date -j -f '%Y-%m-%d %H:%M:%S' '2024-01-01 08:00:00' +%s  # macOS

什么是 Unix 时间戳?

Unix 时间戳(Unix Timestamp)是一种将特定时间点转换为纯数字的表示方式,便于计算机存储、计算和跨系统交换。最常见的 Unix 时间戳以1970年1月1日00:00:00 UTC(协调世界时)为起点,计算从该时刻到目标时间所经过的秒数或毫秒数。

例如,时间戳 1704067200 表示从 Unix 纪元起经过了约17亿零406万7千2百秒,对应北京时间 2024年1月1日 08:00:00。由于采用纯数字表示,时间戳天然具备跨时区、跨平台、格式统一的优点,不会因为地区或语言差异而产生歧义,是全球开发者公认的标准时间表示法。

在编程开发、数据库设计、API 接口、日志分析和缓存系统中,时间戳是最常用的时间存储格式。无论是 JavaScript 的 Date.now()、Python 的 time.time()、Java 的 System.currentTimeMillis(),还是 MySQL 的 UNIX_TIMESTAMP(),底层都遵循同样的计算逻辑。掌握时间戳的转换与计算,是每一位开发者、运维工程师和数据分析师的基础技能。

本工具支持10位秒级与13位毫秒级时间戳的自动识别与转换。输入任意位数即可正确解析,无需手动选择格式。

10位时间戳与13位时间戳的详细对比

很多开发者在处理时间戳时,都会遇到10位和13位数字的困惑。其实两者的区别非常简单,核心差异仅在于时间精度单位不同。以下是详细对比:

对比项 10位时间戳(秒级) 13位时间戳(毫秒级)
单位 秒(s) 毫秒(ms)
精度 精确到秒 精确到毫秒(1/1000秒)
换算关系 13位 ÷ 1000 = 10位 | 10位 × 1000 = 13位
典型使用场景 服务器端开发、Linux命令、数据库存储、API标准字段 前端JavaScript、动画帧率、接口耗时统计、高并发订单号
常用函数 time.time()、time()、Instant.getEpochSecond() Date.now()、System.currentTimeMillis()、time.Now().UnixMilli()
示例值 1704067200 1704067200000

如何选择使用哪种格式?

在实际开发中,选择10位还是13位时间戳取决于业务场景对时间精度的要求:

注意:部分老旧系统或32位环境使用有符号32位整数存储秒级时间戳,将在2038年1月19日发生溢出(Year 2038问题)。现代系统已普遍迁移至64位存储,可安全使用到数亿年之后。

时间戳的典型应用场景

时间戳虽然看起来只是一串数字,但在互联网和软件开发中几乎无处不在。以下是经过实际项目验证的最典型应用场景:

Unix 纪元(Epoch)与时区处理详解

Unix 纪元(Unix Epoch)是指1970年1月1日00:00:00 UTC,这是所有 Unix 时间戳计算的起点,也就是时间戳为 0 的时刻。选择这个日期作为起点,是因为 Unix 操作系统在1970年代初期由贝尔实验室开发时,需要一个统一且足够早的基准时间,而1970年1月1日恰好是一个周四,便于计算周数。

需要注意的是,Unix 纪元的基准是 UTC 时间(协调世界时,Coordinated Universal Time),而非北京时间。北京时间属于东八区(UTC+8),比 UTC 快8个小时。因此同一个时间戳在不同地区显示的结果不同:

本工具的转换结果默认显示为北京时间(UTC+8),这也是中国开发者最常用的本地时间格式。如果你的服务器或数据库使用 UTC 存储,转换后需要自行减去8小时得到 UTC 时间,或在代码中显式指定时区进行转换。

在国际化应用中,最佳实践是存储使用 UTC 时间戳,显示根据用户时区本地化。这样可以避免夏令时(DST)切换、时区变更等带来的复杂问题。JavaScript 的 toLocaleString()、Python 的 pytz 库、Java 的 ZoneId 都提供了完善的时区转换支持。

使用说明与隐私保障

本工具完全免费,所有计算均在浏览器本地完成,不会上传任何数据到服务器,可放心在本地开发环境或生产服务器上使用。具体操作步骤如下:

  1. 页面顶部实时显示当前北京时间和对应的 Unix 时间戳(秒级与毫秒级),每秒自动更新,方便你直接复制使用。
  2. 在左侧「时间戳 → 日期」区域输入时间戳数字,支持10位(秒)和13位(毫秒)自动识别,点击「转换」即可得到标准日期时间。支持按 Enter 键快速转换。
  3. 点击「粘贴并转换」可自动读取剪贴板内容并执行转换,省去手动粘贴步骤,提升开发效率。
  4. 在右侧「日期 → 时间戳」区域选择日期时间,可在下拉框中选择输出秒级(10位)或毫秒级(13位)格式。
  5. 点击「使用当前时间」可快速填入此刻的日期时间,方便生成当前时间戳用于测试或记录。
  6. 转换结果支持一键复制,点击「复制结果」按钮即可写入剪贴板,方便粘贴到代码编辑器、终端或文档中。
  7. 中间代码示例区提供 JavaScript、Python、Java、Go、PHP、C#、Bash 七种主流语言的时间戳操作代码,点击标签即可切换,可直接复制到项目中使用。

隐私承诺:所有时间转换计算均在您的浏览器本地完成,不会上传任何数据到服务器,不会记录您的输入内容,可放心使用。

常见问题解答(FAQ)

什么是 Unix 时间戳?

Unix 时间戳(Unix Timestamp)是一种将特定时间点转换为数字的表示方式,以1970年1月1日00:00:00 UTC为起点,计算从该时刻到目标时间所经过的秒数或毫秒数。10位数字表示秒级精度,13位数字表示毫秒级精度,广泛应用于编程开发、数据库记录和API接口中。

10位时间戳和13位时间戳有什么区别?

10位时间戳以秒为单位,是传统 Unix 时间戳标准格式,在服务器端开发、Linux系统命令、数据库标准函数中最为常见;13位时间戳以毫秒为单位,是 JavaScript 等现代前端开发的默认格式,Date.now()返回的就是13位毫秒时间戳。两者相差1000倍,13位时间戳末尾三位为毫秒精度。本工具支持两种格式自动识别与转换。

时间戳怎么计算?

时间戳的计算以1970年1月1日00:00:00 UTC为起点(Unix纪元)。计算目标时间与该起点之间的时间差,以秒为单位得到10位时间戳,以毫秒为单位得到13位时间戳。例如2024年1月1日0点0分0秒UTC对应的秒级时间戳为1704067200,毫秒级为1704067200000。

JavaScript 如何获取当前时间戳?

JavaScript 获取当前时间戳有三种常用方式:Date.now() 返回13位毫秒时间戳;new Date().getTime() 同样返回毫秒时间戳;Math.floor(Date.now()/1000) 可得到10位秒级时间戳。在 Node.js 环境中也可以使用 process.hrtime.bigint() 获取更高精度的时间。

Python 如何转换时间戳与日期?

Python 中使用 time 模块:time.time() 获取当前秒级时间戳;time.localtime(ts) 将时间戳转为本地时间元组;time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(ts)) 格式化输出。datetime 模块更灵活:datetime.datetime.fromtimestamp(ts) 直接转为 datetime 对象,支持时区处理。

Unix 时间戳的0代表什么?

Unix 时间戳的0表示1970年1月1日00:00:00 UTC,这个时刻被称为 Unix 纪元(Unix Epoch),是所有 Unix 时间戳计算的起点。在北京时间(UTC+8)中,这个时间对应1970年1月1日08:00:00。

时间戳会溢出吗?Year 2038 问题是什么?

32位有符号整数存储的秒级时间戳将在2038年1月19日03:14:07 UTC发生溢出(Year 2038问题),回滚到1901年。这是因为32位有符号整数的最大值为2,147,483,647。现代系统已普遍采用64位整数存储,可表示到数亿年之后,因此实际应用中无需担心溢出问题。但维护老旧32位嵌入式设备或数据库时仍需注意。

相关工具与扩展阅读

时间戳转换只是开发工作中时间处理的一部分。如果你还需要以下功能,可以参考对应的解决方案:

本工具持续更新维护,确保时间计算逻辑准确无误。如果你发现任何问题或有功能建议,欢迎通过页面底部链接反馈。

最新博客

JavaScript 日期与时间戳转换的 5 种方法及最佳实践

详解 JavaScript 中 Date.now()、getTime()、valueOf() 等 5 种获取时间戳的方法差异,讲解时区处理陷阱与最佳实践,附带可直接复用的工具函数代码。

Unix 时间戳完全指南:从 Epoch 到毫秒精度的演进

深入解析 Unix 时间戳的起源与计算原理,包括 Epoch 纪元定义、10位秒级与13位毫秒级的区别、32位时间戳的2038年溢出问题,以及现代开发中为什么更推荐使用毫秒级时间戳。