概述
这份综合速查表为编程和数据交换中使用的所有常用时间戳格式提供快速参考。所有示例使用2024年1月1日 12:00:00 UTC作为参考时间。
快速参考表
格式示例长度使用场景Unix秒170411040010位数字旧系统、APIUnix毫秒170411040000013位数字JavaScript、Java、现代APIUnix微秒170411040000000016位数字高精度日志Unix纳秒170411040000000000019位数字性能监控ISO 8601 (UTC)2024-01-01T12:00:00Z可变国际标准ISO 8601 (时区)2024-01-01T12:00:00+00:00可变时区感知数据RFC 33392024-01-01T12:00:00.000Z可变互联网时间戳RFC 2822Mon, 01 Jan 2024 12:00:00 +0000可变邮件头SQL DATETIME2024-01-01 12:00:0019字符数据库存储
Unix时间戳格式
秒(10位数字)
格式:自1970年1月1日 00:00:00 UTC以来的秒数整数
1704110400
何时使用:
旧系统和API
存储效率(int32为4字节)
2038年问题考虑
代码示例:
CopyJAVASCRIPT1// JavaScript
2const timestamp = Math.floor(Date.now() / 1000);
3// 1704110400
4
5const date = new Date(timestamp * 1000);
6// 2024-01-01T12:00:00.000Z
CopyPYTHON1# Python
2import time
3timestamp = int(time.time())
4# 1704110400
5
6from datetime import datetime
7date = datetime.fromtimestamp(timestamp)
8# 2024-01-01 12:00:00
CopyPHP1// PHP
2$timestamp = time();
3// 1704110400
4
5$date = date('Y-m-d H:i:s', $timestamp);
6// 2024-01-01 12:00:00
CopyGO1// Go
2import "time"
3
4timestamp := time.Now().Unix()
5// 1704110400
6
7date := time.Unix(timestamp, 0)
8// 2024-01-01 12:00:00 +0000 UTC
毫秒(13位数字)
格式:自Unix纪元以来的毫秒数整数
1704110400000
何时使用:
JavaScript应用程序(Date.now()默认值)
现代Web API
需要毫秒精度
代码示例:
CopyJAVASCRIPT1// JavaScript
2const timestamp = Date.now();
3// 1704110400000
4
5const date = new Date(timestamp);
6// 2024-01-01T12:00:00.000Z
CopyPYTHON1# Python
2import time
3timestamp = int(time.time() * 1000)
4# 1704110400000
5
6from datetime import datetime
7date = datetime.fromtimestamp(timestamp / 1000)
CopyJAVA1// Java
2long timestamp = System.currentTimeMillis();
3// 1704110400000
4
5Date date = new Date(timestamp);
6// Mon Jan 01 12:00:00 UTC 2024
CopyCSHARP1// C#
2long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
3// 1704110400000
4
5DateTimeOffset date = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
微秒(16位数字)
格式:自Unix纪元以来的微秒数整数
1704110400000000
何时使用:
高精度日志和监控
性能基准测试
科学应用
代码示例:
CopyPYTHON1# Python
2import time
3timestamp = int(time.time() * 1_000_000)
4# 1704110400000000
5
6date = datetime.fromtimestamp(timestamp / 1_000_000)
CopyGO1// Go
2timestamp := time.Now().UnixMicro()
3// 1704110400000000
4
5date := time.UnixMicro(timestamp)
CopyRUST1// Rust
2use std::time::{SystemTime, UNIX_EPOCH};
3
4let timestamp = SystemTime::now()
5 .duration_since(UNIX_EPOCH)
6 .unwrap()
7 .as_micros();
8// 1704110400000000
纳秒(19位数字)
格式:自Unix纪元以来的纳秒数整数
1704110400000000000
何时使用:
超高精度时间要求
性能分析
交易系统
代码示例:
CopyGO1// Go
2timestamp := time.Now().UnixNano()
3// 1704110400000000000
4
5date := time.Unix(0, timestamp)
CopyRUST1// Rust
2let timestamp = SystemTime::now()
3 .duration_since(UNIX_EPOCH)
4 .unwrap()
5 .as_nanos();
6// 1704110400000000000
ISO 8601格式
基本格式(UTC)
格式:YYYY-MM-DDTHH:MM:SSZ
2024-01-01T12:00:00Z
何时使用:
国际数据交换
RESTful API
JSON数据存储
代码示例:
CopyJAVASCRIPT1// JavaScript
2const isoString = new Date().toISOString();
3// 2024-01-01T12:00:00.000Z
CopyPYTHON1# Python
2from datetime import datetime, timezone
3iso_string = datetime.now(timezone.utc).isoformat().replace('+00:00', 'Z')
4# 2024-01-01T12:00:00Z
CopyPHP1// PHP
2$iso_string = gmdate('Y-m-d\TH:i:s\Z');
3// 2024-01-01T12:00:00Z
扩展格式(带毫秒)
格式:YYYY-MM-DDTHH:MM:SS.sssZ
2024-01-01T12:00:00.000Z
CopyJAVASCRIPT1// JavaScript (默认)
2new Date().toISOString();
3// 2024-01-01T12:00:00.000Z
CopyPYTHON1# Python
2datetime.now(timezone.utc).isoformat(timespec='milliseconds').replace('+00:00', 'Z')
3# 2024-01-01T12:00:00.000Z
带时区偏移
格式:YYYY-MM-DDTHH:MM:SS±HH:MM
2024-01-01T12:00:00+00:00
2024-01-01T17:30:00+05:30 # IST
2024-01-01T07:00:00-05:00 # EST
代码示例:
CopyJAVASCRIPT1// JavaScript
2const date = new Date();
3const offset = -date.getTimezoneOffset();
4const sign = offset >= 0 ? '+' : '-';
5const hours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, '0');
6const minutes = String(Math.abs(offset) % 60).padStart(2, '0');
7const iso = date.toISOString().replace('Z', `${sign}${hours}:${minutes}`);
8// 2024-01-01T12:00:00.000+00:00
CopyPYTHON1# Python
2datetime.now(timezone.utc).isoformat()
3# 2024-01-01T12:00:00+00:00
4
5# 使用特定时区
6from datetime import timezone, timedelta
7ist = timezone(timedelta(hours=5, minutes=30))
8datetime.now(ist).isoformat()
9# 2024-01-01T17:30:00+05:30
仅日期
格式:YYYY-MM-DD
2024-01-01
CopyJAVASCRIPT1// JavaScript
2new Date().toISOString().split('T')[0];
3// 2024-01-01
CopyPYTHON1# Python
2datetime.now().date().isoformat()
3# 2024-01-01
仅时间
格式:HH:MM:SS 或 HH:MM:SS.sss
12:00:00
12:00:00.000
CopyJAVASCRIPT1// JavaScript
2new Date().toISOString().split('T')[1];
3// 12:00:00.000Z
CopyPYTHON1# Python
2datetime.now().time().isoformat()
3# 12:00:00.000000
RFC 3339格式
格式:YYYY-MM-DDTHH:MM:SS.sss±HH:MM 或 ...Z
2024-01-01T12:00:00.000Z
2024-01-01T12:00:00.000+00:00
与ISO 8601的区别:
始终包含毫秒
始终包含时区
更严格的规范
代码示例:
CopyJAVASCRIPT1// JavaScript
2new Date().toISOString(); // 已符合RFC 3339
3// 2024-01-01T12:00:00.000Z
CopyPYTHON1# Python
2from datetime import datetime, timezone
3datetime.now(timezone.utc).isoformat()
4# 2024-01-01T12:00:00.000000+00:00
CopyGO1// Go
2time.Now().UTC().Format(time.RFC3339Nano)
3// 2024-01-01T12:00:00.000000000Z
RFC 2822格式
格式:Day, DD Mon YYYY HH:MM:SS ±HHMM
Mon, 01 Jan 2024 12:00:00 +0000
Mon, 01 Jan 2024 12:00:00 GMT
何时使用:
邮件头(Date字段)
HTTP头
RSS源
代码示例:
CopyJAVASCRIPT1// JavaScript
2new Date().toUTCString();
3// Mon, 01 Jan 2024 12:00:00 GMT
CopyPYTHON1# Python
2from email.utils import formatdate
3formatdate(timeval=None, localtime=False, usegmt=True)
4# Mon, 01 Jan 2024 12:00:00 GMT
CopyPHP1// PHP
2date('r');
3// Mon, 01 Jan 2024 12:00:00 +0000
SQL时间戳格式
MySQL/MariaDB DATETIME
格式:YYYY-MM-DD HH:MM:SS
2024-01-01 12:00:00
CopySQL1-- MySQL
2SELECT NOW();
3-- 2024-01-01 12:00:00
4
5SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
6-- 2024-01-01 12:00:00
PostgreSQL TIMESTAMP
格式:YYYY-MM-DD HH:MM:SS.ssssss±TZ
2024-01-01 12:00:00.000000+00
2024-01-01 12:00:00+00
CopySQL1-- PostgreSQL
2SELECT NOW();
3-- 2024-01-01 12:00:00.000000+00
4
5SELECT CURRENT_TIMESTAMP;
6-- 2024-01-01 12:00:00.000000+00
SQLite DATETIME
格式:YYYY-MM-DD HH:MM:SS(存储为文本)
2024-01-01 12:00:00
CopySQL1-- SQLite
2SELECT datetime('now');
3-- 2024-01-01 12:00:00
4
5SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
6-- 2024-01-01 12:00:00
Microsoft SQL Server
格式:YYYY-MM-DD HH:MM:SS.sss
2024-01-01 12:00:00.000
CopySQL1-- SQL Server
2SELECT GETUTCDATE();
3-- 2024-01-01 12:00:00.000
4
5SELECT FORMAT(GETUTCDATE(), 'yyyy-MM-dd HH:mm:ss.fff');
6-- 2024-01-01 12:00:00.000
特定语言格式
JavaScript
CopyJAVASCRIPT1// 各种格式
2const date = new Date();
3
4// ISO 8601
5date.toISOString(); // 2024-01-01T12:00:00.000Z
6
7// 本地字符串
8date.toLocaleString(); // 1/1/2024, 12:00:00 PM
9
10// UTC字符串
11date.toUTCString(); // Mon, 01 Jan 2024 12:00:00 GMT
12
13// 仅日期
14date.toLocaleDateString(); // 1/1/2024
15
16// 仅时间
17date.toLocaleTimeString(); // 12:00:00 PM
18
19// 自定义格式
20date.toLocaleString('zh-CN', {
21 year: 'numeric',
22 month: '2-digit',
23 day: '2-digit',
24 hour: '2-digit',
25 minute: '2-digit',
26 second: '2-digit',
27 hour12: false
28});
29// 2024/01/01 12:00:00
Python strftime代码
CopyPYTHON1from datetime import datetime
2
3dt = datetime(2024, 1, 1, 12, 0, 0)
4
5# 常用格式
6dt.strftime('%Y-%m-%d') # 2024-01-01
7dt.strftime('%Y-%m-%d %H:%M:%S') # 2024-01-01 12:00:00
8dt.strftime('%Y-%m-%dT%H:%M:%SZ') # 2024-01-01T12:00:00Z
9dt.strftime('%d/%m/%Y') # 01/01/2024
10dt.strftime('%m/%d/%Y') # 01/01/2024
11dt.strftime('%B %d, %Y') # January 01, 2024
12dt.strftime('%A, %B %d, %Y') # Monday, January 01, 2024
13dt.strftime('%I:%M %p') # 12:00 PM
PHP date()格式
CopyPHP1
2$timestamp = 1704110400;
3
4// 常用格式
5date('Y-m-d', $timestamp); // 2024-01-01
6date('Y-m-d H:i:s', $timestamp); // 2024-01-01 12:00:00
7date('c', $timestamp); // 2024-01-01T12:00:00+00:00 (ISO 8601)
8date('r', $timestamp); // Mon, 01 Jan 2024 12:00:00 +0000 (RFC 2822)
9date('U', $timestamp); // 1704110400 (Unix时间戳)
10date('d/m/Y', $timestamp); // 01/01/2024
11date('m/d/Y', $timestamp); // 01/01/2024
12date('F j, Y', $timestamp); // January 1, 2024
13date('l, F j, Y', $timestamp); // Monday, January 1, 2024
14date('g:i A', $timestamp); // 12:00 PM
Go时间格式
CopyGO1package main
2
3import (
4 "time"
5)
6
7func main() {
8 t := time.Date(2024, 1, 1, 12, 0, 0, 0, time.UTC)
9
10 // 标准格式
11 t.Format(time.RFC3339) // 2024-01-01T12:00:00Z
12 t.Format(time.RFC3339Nano) // 2024-01-01T12:00:00.000000000Z
13 t.Format(time.RFC822) // 01 Jan 24 12:00 UTC
14 t.Format(time.RFC1123) // Mon, 01 Jan 2024 12:00:00 UTC
15
16 // 自定义格式(使用参考时间:Jan 2 15:04:05 2006 MST)
17 t.Format("2006-01-02") // 2024-01-01
18 t.Format("2006-01-02 15:04:05") // 2024-01-01 12:00:00
19 t.Format("01/02/2006") // 01/01/2024
20 t.Format("January 2, 2006") // January 1, 2024
21 t.Format("3:04 PM") // 12:00 PM
22}
Java SimpleDateFormat
CopyJAVA1import java.text.SimpleDateFormat;
2import java.util.Date;
3import java.util.TimeZone;
4
5Date date = new Date(1704110400000L);
6SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
7sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
8
9// 常用模式
10"yyyy-MM-dd" // 2024-01-01
11"yyyy-MM-dd HH:mm:ss" // 2024-01-01 12:00:00
12"yyyy-MM-dd'T'HH:mm:ss'Z'" // 2024-01-01T12:00:00Z
13"dd/MM/yyyy" // 01/01/2024
14"MM/dd/yyyy" // 01/01/2024
15"MMMM d, yyyy" // January 1, 2024
16"EEEE, MMMM d, yyyy" // Monday, January 1, 2024
17"h:mm a" // 12:00 PM
格式转换快速参考
Unix → ISO 8601
CopyJAVASCRIPT1// JavaScript
2new Date(1704110400000).toISOString();
3// 2024-01-01T12:00:00.000Z
CopyPYTHON1# Python
2from datetime import datetime, timezone
3datetime.fromtimestamp(1704110400, timezone.utc).isoformat()
4# 2024-01-01T12:00:00+00:00
ISO 8601 → Unix
CopyJAVASCRIPT1// JavaScript
2new Date('2024-01-01T12:00:00Z').getTime();
3// 1704110400000
CopyPYTHON1# Python
2from datetime import datetime
3datetime.fromisoformat('2024-01-01T12:00:00+00:00').timestamp()
4# 1704110400.0
RFC 2822 → ISO 8601
CopyJAVASCRIPT1// JavaScript
2new Date('Mon, 01 Jan 2024 12:00:00 GMT').toISOString();
3// 2024-01-01T12:00:00.000Z
CopyPYTHON1# Python
2from email.utils import parsedate_to_datetime
3parsedate_to_datetime('Mon, 01 Jan 2024 12:00:00 GMT').isoformat()
4# 2024-01-01T12:00:00+00:00
最佳实践
存储建议
数据库:使用原生TIMESTAMP类型并支持时区
API:使用带时区的ISO 8601以保证可移植性
内部处理:使用Unix毫秒进行计算
日志记录:使用带毫秒和时区的ISO 8601
时区处理
始终包含时区 - 避免歧义时间戳
以UTC存储 - 仅在显示时转换为本地时间
使用Z表示UTC - 比+00:00更清晰
验证时区偏移 - 确保在-12:00到+14:00范围内
精度选择
精度使用场景示例秒用户事件、调度1704110400毫秒Web应用、通用日志1704110400000微秒性能监控1704110400000000纳秒高频交易1704110400000000000
常见陷阱
❌ 避免:
存储没有时区信息的时间戳
使用本地时间存储(始终使用UTC)
混用不同精度级别
硬编码时区偏移
使用32位整数(2038年问题)
✅ 应该:
始终包含时区指示符(Z或±HH:MM)
以UTC存储,仅在显示时转换为本地时间
在整个系统中使用一致的精度
使用时区感知的datetime对象
对Unix时间戳使用64位整数
相关工具
Unix时间戳转换器 - 在格式之间转换
时间戳格式构建器 - 创建自定义格式
时区转换器 - 处理时区转换
批量时间戳转换器 - 转换多个时间戳
相关指南
ISO 8601格式详解
理解时区
时间戳精度等级