当前时间
时间戳(秒)
--
时间戳(毫秒)
--
本地时间
加载中...
时间戳 → 日期时间
日期时间 → 时间戳
支持格式:YYYY-MM-DD HH:MM:SS
关于 Unix 时间戳
什么是 Unix 时间戳?
Unix 时间戳(Unix Timestamp)起源于 Unix 操作系统,1969 年 Unix 系统设计者因开发需要, 选定 1970 年 1 月 1 日 00:00:00 UTC(协调世界时,该时间点被称为"Unix 纪元"或"Unix Epoch")作为起始时间点, 它表示自此开始所经过的秒数,是一种简洁的时间表示方式,广泛用于计算机系统中。
时间戳格式
- 秒级时间戳:10 位数字,例如 1234567890
- 毫秒级时间戳:13 位数字,例如 1234567890123
时间戳的优势
- 简洁高效:用一个整数即可表示时间,节省存储空间
- 易于计算:可以直接进行加减运算来计算时间差
- 跨平台:不同系统和编程语言都能理解
- 无歧义:不受时区和地区设置影响
- 国际化:全球统一标准,便于跨国业务
时区说明
Unix 时间戳本身不包含时区信息,它始终表示 UTC 时间。在转换为本地时间时,需要根据用户所在的时区进行调整。 例如:时间戳 0 表示 1970-01-01 00:00:00 UTC,在中国时区(UTC+8)则为 1970-01-01 08:00:00。
时间戳范围
- 32 位系统:最大可表示到 2038 年 1 月 19 日(Y2038 问题)
- 64 位系统:可表示到公元 292,277,026,596 年
- 负数时间戳:表示 1970 年之前的时间
使用场景
- 数据库时间字段存储
- API 接口时间参数传递
- 日志记录时间标记
- 缓存过期时间设置
- 分布式系统时间同步
常见时间戳示例
| 描述 | 时间戳(秒) | UTC 时间 |
|---|---|---|
| Unix 纪元 | 0 | 1970-01-01 00:00:00 |
| 千年虫 | 946684800 | 2000-01-01 00:00:00 |
| Y2K38 问题 | 2147483647 | 2038-01-19 03:14:07 |
编程语言示例
获取当前时间戳
JavaScript
// 获取秒级时间戳
Math.floor(Date.now() / 1000);
// 获取毫秒级时间戳
Date.now();
// 时间戳转日期
new Date(timestamp).toLocaleString('zh-CN');
// 日期转时间戳
new Date().getTime();Python
import time
# 获取秒级时间戳
int(time.time())
# 获取毫秒级时间戳
int(time.time() * 1000)
# 时间戳转日期
import datetime
datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
# 日期转时间戳
int(datetime.datetime.now().timestamp())Java
// 获取秒级时间戳
System.currentTimeMillis() / 1000;
// 获取毫秒级时间戳
System.currentTimeMillis();
// 时间戳转日期
import java.text.SimpleDateFormat;
import java.util.Date;
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(timestamp * 1000));
// 日期转时间戳
new Date().getTime();PHP
// 获取秒级时间戳
time();
// 获取毫秒级时间戳
microtime(true) * 1000;
// 时间戳转日期
date('Y-m-d H:i:s', $timestamp);
// 日期转时间戳
strtotime('now');Go
package main
import (
"time"
)
// 获取秒级时间戳
time.Now().Unix()
// 获取毫秒级时间戳
time.Now().UnixMilli()
// 时间戳转日期
time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
// 日期转时间戳
time.Now().Unix()C#
using System;
// 获取秒级时间戳
DateTimeOffset.UtcNow.ToUnixTimeSeconds();
// 获取毫秒级时间戳
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
// 时间戳转日期
DateTimeOffset.FromUnixTimeSeconds(timestamp).LocalDateTime.ToString("yyyy-MM-dd HH:mm:ss");
// 日期转时间戳
DateTimeOffset.UtcNow.ToUnixTimeSeconds();Ruby
# 获取秒级时间戳
Time.now.to_i
# 获取毫秒级时间戳
(Time.now.to_f * 1000).to_i
# 时间戳转日期
Time.at(timestamp).strftime("%Y-%m-%d %H:%M:%S")
# 日期转时间戳
Time.now.to_iShell
# 获取秒级时间戳
date +%s
# 获取毫秒级时间戳
date +%s%3N
# 时间戳转日期
date -d @timestamp '+%Y-%m-%d %H:%M:%S'SQL
-- MySQL
-- 获取当前时间戳
SELECT UNIX_TIMESTAMP();
-- 时间戳转日期
SELECT FROM_UNIXTIME(timestamp);
-- 日期转时间戳
SELECT UNIX_TIMESTAMP('2024-01-01 00:00:00');
-- PostgreSQL
-- 获取当前时间戳
SELECT EXTRACT(EPOCH FROM CURRENT_TIMESTAMP);
-- 时间戳转日期
SELECT to_timestamp(timestamp);