# 时间格式ISO 8601标准表示

2025-05-05T15:42+08:00

注意:T是写死的。标准规定的。

# 逐段解析:

部分 含义 示例值说明
2025 年份(4位) 2025年
-05 月份(2位,01-12) 5月
-05 日期(2位,01-31) 5日
T 日期与时间的分隔符 固定字符
15 小时(24小时制,00-23) 15时(下午3点)
:42 分钟(00-59) 42分
+08:00 时区偏移(相对于UTC) 东八区(北京时间)

# 关键点说明:

  1. 时区部分 +08:00
    • + 表示东时区,- 表示西时区
    • 08:00 表示比UTC(世界协调时)早8小时
    • 中国标准时间(CST)就是UTC+8
  2. T 分隔符
    • ISO 8601 标准要求日期和时间用 T 连接
    • 实际应用中有时会用空格替代(但不符合标准)
  3. 省略秒和毫秒
    • 如果精度到秒会显示 :00
    • 毫秒用 .000 表示(如 15:42:30.500

其他等效表示:

  • UTC 时间2025-05-05T07:42Z (去掉8小时时区差,Z表示UTC)
  • 无时区2025-05-05T15:42 (不推荐,易产生歧义)
  • 本地化显示2025年5月5日 15:42(北京时间)

# 代码中如何处理(Java示例):

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

String isoStr = "2025-05-05T15:42+08:00";

// 解析为带时区的时间对象
OffsetDateTime odt = OffsetDateTime.parse(isoStr);

// 格式化为本地显示
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年M月d日 HH:mm (ZZZZ)");
String localStr = odt.format(formatter); 
// 输出:2025年5月5日 15:42 (GMT+08:00)

// 转换为时间戳(毫秒)
long timestamp = odt.toInstant().toEpochMilli();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 常见使用场景:

  1. API 接口:HTTP 头部的 Last-ModifiedExpires
  2. 日志系统:标准化时间记录
  3. 数据库存储:MySQL 的 TIMESTAMP WITH TIME ZONE
  4. 国际协作:避免时区混淆

# 总结

这种格式的优势是无歧义可排序(字符串直接按字典序比较就是时间顺序)。

Last Updated: 5/20/2025, 4:37:55 AM