日期时间格式速查表 - strftime/ISO 8601/时间戳大全
日期 bug 多半是时区 bug——本机看着对的 14:00,换台服务器就差出 8 小时。本表按 strftime 格式符、ISO 8601、时区与偏移、各语言格式化方法、时间戳转换组织,把每个 token 对应到什么输出讲清,并点出 UTC 与本地时区互转的常见坑。写日志格式、定义接口时间戳、解析 ISO 串时常来对照。读完能选到跨服务器、跨端往返一致的日期写法。
strftime 格式符 13
%Y四位年份(2024)
%y两位年份(24)
%m月份(01-12)
%d日期(01-31)
%H小时 24 小时制(00-23)
%I小时 12 小时制(01-12)
%M分钟(00-59)
%S秒(00-59)
%pAM/PM 标记
%A星期全名(Monday)
%B月份全名(January)
%Z时区名称(UTC/CST)
%sUnix 时间戳(秒)
ISO 8601 标准 7
2024-01-15日期格式(YYYY-MM-DD)
2024-01-15T10:30:00ZUTC 时间(Z 表示零偏移)
2024-01-15T10:30:00+08:00带时区偏移
2024-01-15T10:30:00.123Z带毫秒精度
2024-W03-1ISO 周日期(第 3 周周一)
2024-015ISO 序数日(当年第 15 天)
PT1H30M持续时间(1 小时 30 分)
时区与偏移 6
UTC协调世界时(基准时区)
GMT格林威治标准时间(等同 UTC)
+08:00东八区偏移(北京时间)
Asia/ShanghaiIANA 时区标识
America/New_YorkIANA 时区(含夏令时)
DST夏令时(Daylight Saving Time)
各语言日期格式化 7
new Date().toISOString()JavaScript ISO 格式
datetime.now().strftime("%Y-%m-%d")Python strftime 格式化
date("+%Y-%m-%d %H:%M:%S")Shell date 命令
SimpleDateFormat("yyyy-MM-dd")Java 格式化(yyyy=年 MM=月)
time.Now().Format("2006-01-02")Go 格式化(参考时间)
chrono::Local::now()Rust chrono 库获取本地时间
Intl.DateTimeFormat().format()JS 国际化日期格式化
时间戳转换 6
Date.now()JS 获取毫秒时间戳(13 位)
int(time.time())Python 获取秒级时间戳
date +%sShell 获取时间戳
new Date(1705312200 * 1000)JS 时间戳转日期对象
datetime.fromtimestamp(1705312200)Python 时间戳转日期
date -d @1705312200Shell 时间戳转可读日期
日期运算 6
now + timedelta(days=7)Python 日期加 7 天
new Date(Date.now() + 86400000)JS 日期加 1 天(毫秒)
date -d "+1 days"Shell 日期加 1 天
d1 > d2日期比较(先转同一类型)
(d2 - d1).daysPython 计算日期差值(天数)
dayjs(d1).isAfter(d2)JS dayjs 日期比较
常见日期格式 5
2024-01-15 10:30:00SQL/MySQL 默认格式
Mon, 15 Jan 2024 10:30:00 GMTRFC 2822(邮件/HTTP 头)
2024/01/15常见斜杠分隔格式
20240115紧凑日期格式(YYYYMMDD)
1705312200Unix 时间戳(秒)
提示
- ISO 8601 是国际标准格式,推荐在 API 和数据库中统一使用。
- Go 的参考时间是 2006-01-02 15:04:05(Mon Jan 2 15:04:05 MST 2006)。
- Unix 时间戳是秒数(10 位),JavaScript 的 Date.now() 是毫秒数(13 位)。
- 处理时区问题时,建议统一用 UTC 存储,显示时再转换为本地时区。
- Java 的 SimpleDateFormat 线程不安全,多线程环境推荐用 DateTimeFormatter。
由 巧匠 维护
公开更新于 2026年7月21日,内容持续校对官方文档。