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

Java中将2021-10-13 11:33:16.000-04字符串转为Date对象的解决方法

Java 带单数字时区偏移的日期字符串解析方案

异常原因

你使用的ZZ模式符仅支持匹配带分钟的4位时区偏移格式(例如-0400),而待解析字符串中的时区仅为小时位-04,格式不匹配因此抛出解析异常。

正确解决方案

方案1:使用SimpleDateFormat(兼容低版本Java)

使用X模式符匹配ISO 8601标准的单小时时区偏移即可,代码示例:

SimpleDateFormat inFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSX");
Date date = inFormatter.parse("2021-10-13 11:33:16.000-04");

注意:SimpleDateFormat是线程不安全类,多线程场景下需单独实例化或加锁使用。

方案2:使用java.time包(推荐,Java 8+支持)

Java 8及以上版本优先使用线程安全的java.time类处理日期转换,代码示例:

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

// 定义格式化规则
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSX");
// 解析为OffsetDateTime对象
OffsetDateTime offsetDateTime = OffsetDateTime.parse("2021-10-13 11:33:16.000-04", formatter);
// 如需转换为java.util.Date对象
Date date = Date.from(offsetDateTime.toInstant());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:06:03