首页 > Java > java教程 > 为什么在 Java 中解析日期字符串会抛出'非法模式字符'T'”?

为什么在 Java 中解析日期字符串会抛出'非法模式字符'T'”?

Patricia Arquette
发布: 2024-12-18 08:41:11
原创
147 人浏览过

Why Does Parsing a Date String in Java Throw

将日期字符串解析为 java.util.Date 时出现非法模式字符“T”

将日期字符串解析为 java.util.Date。日期对象需要遵守特定规则的模式。一种常见模式是“yyyy-MM-ddThh:mm:ssZ”,它表示 ISO 8601 格式的日期。

问题:
使用指定模式时,例外情况是抛出消息“java.lang.IllegalArgumentException:非法模式字符'T'."

原因:
模式中的 'T' 表示日期和时间部分之间的分隔符。然而,在Java的SimpleDateFormat中,'T'字符需要在两边加上单引号进行转义才能正确识别。

解决方案1:在模式中转义'T'
要使用原始模式解决问题,请将“T”字符转义为如下:

String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";
登录后复制

解决方案2:使用ISO_8601_24H_FULL_FORMAT
或者,您可以使用Q2597083提供的预定义ISO_8601_24H_FULL_FORMAT常量class:

String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;
登录后复制

对于 Java 8 及更高版本:
对于 Java 8 及更高版本,建议使用 DateTimeFormatter 类代替 SimpleDateFormat,使用 Instant 代替 Date。下面是一个示例:

import java.time.Instant;
import java.time.format.DateTimeFormatter;

String dateString = "2010-10-02T12:23:23Z";
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
Instant d = Instant.parse(dateString);
System.out.println(d.getYear());
登录后复制

通过使用这些解决方案,您可以成功解析 ISO 8601 格式的日期字符串,而不会遇到“非法模式字符 'T'”异常。

以上是为什么在 Java 中解析日期字符串会抛出'非法模式字符'T'”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板