You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SimpleDateFormat解析带T的日期字符串失败,求正确解决方案

解决SimpleDateFormat解析带'T'的ISO日期格式问题

嘿,这个问题我之前做项目时也踩过坑!其实完全不用手动替换'T',SimpleDateFormat本身就支持解析这种标准的ISO 8601格式日期,只是你需要用正确的模式字符串而已。

1. 正确的SimpleDateFormat模式写法

你需要把固定的'T'用单引号包裹起来,告诉SimpleDateFormat这是一个字面量字符,而不是需要解析的日期时间模式。针对你的日期字符串2018-05-04T15:49:27+00:00,对应的模式应该是:

"yyyy-MM-dd'T'HH:mm:ssXXX"

各部分的含义:

  • yyyy:4位数字的年份
  • MM:2位数字的月份(01-12)
  • dd:2位数字的日期(01-31)
  • 'T':固定的字面量T,必须用单引号括起来
  • HH:24小时制的小时(00-23)
  • mm:分钟(00-59)
  • ss:秒(00-59)
  • XXX:匹配时区偏移格式(比如+00:00、-08:00)

完整的解析代码示例:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateParseExample {
    public static void main(String[] args) {
        String dateStr = "2018-05-04T15:49:27+00:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
        try {
            Date parsedDate = sdf.parse(dateStr);
            System.out.println("解析后的日期:" + parsedDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

2. 关于替换'T'成空格的方案

你当前用替换的方法确实能解析成功,但这不是最规范的做法。因为原字符串是标准的ISO 8601格式,直接使用匹配的模式更符合规范,也能避免后续如果日期格式有细微变化(比如T后面附带其他固定标识)时出现解析失败的问题。

3. 更推荐的Java 8+解决方案

如果你的项目使用Java 8或更高版本,强烈建议使用java.time包下的新日期时间API,它不仅线程安全,而且API设计更简洁直观,还原生支持ISO 8601格式:

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

public class ModernDateParseExample {
    public static void main(String[] args) {
        String dateStr = "2018-05-04T15:49:27+00:00";
        // 直接使用内置的ISO偏移日期时间格式器
        DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
        OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateStr, formatter);
        
        // 可以根据需求转换成其他类型,比如LocalDateTime
        // LocalDateTime localDateTime = offsetDateTime.toLocalDateTime();
        System.out.println("解析后的日期时间:" + offsetDateTime);
    }
}

内容的提问来源于stack exchange,提问作者Abdurakhmon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:43:29