Unix时间戳转换器
将Unix时间戳(纪元时间)转换为可读日期,反之亦然。 支持秒和毫秒。适用于所有时区。 开发者和系统管理员的必备工具。
Unix Time Converter
How to use:
- Enter a Unix timestamp to convert it to human-readable date
- Select a date and time to convert it to Unix timestamp
- Unix time is the number of seconds since January 1, 1970 (UTC)
为什么使用Unix时间戳?
Unix时间戳是编程和系统操作的基础
编程和开发
Unix时间戳与语言无关。在数据库、API和日志中以整数存储日期。无时区歧义——始终基于UTC。
数据库存储
以整数(4或8字节)而非日期时间字符串(20+字节)存储时间戳。更快的索引和查询。
API集成
REST API经常使用Unix时间戳作为created_at、updated_at、expires_at字段。无日期格式歧义。
日志分析
服务器日志、应用程序日志和系统日志经常使用Unix时间戳。更容易按时间顺序排序。
调度和定时器
Cron作业、计划任务和定时器使用Unix时间。夏令时变化自动处理。
安全和过期
会话过期、令牌有效性、缓存TTL都使用Unix时间戳。用于SSL证书、签名URL、临时访问代码。
理解Unix时间戳
什么是Unix时间?
Unix时间(也称为纪元时间或POSIX时间)是自1970年1月1日00:00:00 UTC(Unix纪元)以来经过的秒数。
示例:
0= January 1, 1970, 00:00:00 UTC1000000000= September 9, 2001, 01:46:40 UTC1700000000= November 14, 2023, 22:13:20 UTC
秒与毫秒
Unix时间戳(秒):10位数字。大多数Unix系统的标准。
Unix时间戳(毫秒):13位数字。JavaScript使用。
转换: 秒乘以1000得到毫秒。毫秒除以1000得到秒。
为什么是1970年?
Unix在20世纪60年代末开发。创建者出于实际原因选择1970年1月1日作为纪元:
- 接近Unix开发时期
- 从整数年份(1970)开始简洁且易记
- 它成为了事实标准
- 所有负时间戳代表1970年之前的日期
2038年问题
32位系统只能存储最大2,147,483,647秒的时间戳(2038年1月19日03:14:07 UTC)。之后,32位时间戳将溢出。
解决方案: 现代系统使用64位时间戳,将范围扩展到2920亿年。
代码中使用Unix时间戳
JavaScript / TypeScript
// Get current Unix timestamp (milliseconds)
const now = Date.now(); // 1700000000000
// Get current Unix timestamp (seconds)
const nowSeconds = Math.floor(Date.now() / 1000); // 1700000000
// Convert timestamp to Date
const date = new Date(1700000000 * 1000);
console.log(date.toISOString()); // "2023-11-14T22:13:20.000Z"
// Convert Date to timestamp
const timestamp = Math.floor(new Date('2023-11-14').getTime() / 1000);
// Format human-readable
const readable = new Date(1700000000 * 1000).toLocaleString();
console.log(readable); // "11/14/2023, 10:13:20 PM"Python
import time
from datetime import datetime
# Get current Unix timestamp
now = time.time() # 1700000000.123
# Convert timestamp to datetime
dt = datetime.fromtimestamp(1700000000)
print(dt) # 2023-11-14 22:13:20
# Convert datetime to timestamp
timestamp = datetime(2023, 11, 14).timestamp()
# Format human-readable
readable = datetime.fromtimestamp(1700000000).strftime('%Y-%m-%d %H:%M:%S')
print(readable) # "2023-11-14 22:13:20"PHP
// Get current Unix timestamp
$now = time(); // 1700000000
// Convert timestamp to date
$date = date('Y-m-d H:i:s', 1700000000);
echo $date; // "2023-11-14 22:13:20"
// Convert date to timestamp
$timestamp = strtotime('2023-11-14 22:13:20');
// Using DateTime
$dt = new DateTime('@1700000000');
echo $dt->format('Y-m-d H:i:s'); // "2023-11-14 22:13:20"MySQL / SQL
-- Convert timestamp to datetime
SELECT FROM_UNIXTIME(1700000000);
-- Result: '2023-11-14 22:13:20'
-- Convert datetime to timestamp
SELECT UNIX_TIMESTAMP('2023-11-14 22:13:20');
-- Result: 1700000000
-- Get current timestamp
SELECT UNIX_TIMESTAMP();
-- Query with timestamp
SELECT * FROM logs
WHERE created_at > 1700000000;常见问题
什么是Unix时间戳?
Unix时间戳是自1970年1月1日00:00:00 UTC(Unix纪元)以来经过的秒数(或毫秒数)。它是表示特定时刻的简单整数,与时区无关。
为什么使用Unix时间戳?
Unix时间戳与语言无关、与时区无关、易于比较和排序、存储紧凑,并且便于进行算术运算。
秒和毫秒有什么区别?
以秒为单位的Unix时间戳有10位数字(例如1700000000)。毫秒有13位数字(例如1700000000000)并提供更高的精度。JavaScript默认使用毫秒。
如何获取当前Unix时间戳?
JavaScript: Math.floor(Date.now() / 1000)。Python: time.time()。PHP: time()。Bash: date +%s。
Unix时间戳可以表示1970年之前的日期吗?
可以!负的Unix时间戳代表1970年1月1日之前的日期。例如,-86400代表1969年12月31日。
如何处理Unix时间戳的时区?
Unix时间戳始终是UTC。转换为人类可读格式时指定时区。以UTC存储,显示时转换为本地时区。