【发布时间】:2021-05-09 02:50:54
【问题描述】:
DateTimeFormatter dateFormatter1 =
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String timestamp = "2021-02-03 23:22:23 +0000 UTC";
DateTime converted1 = dateFormatter1.parseDateTime(timestamp);
Invalid format: "2021-02-03 23:22:23 +0000 UTC" is malformed at " 23:22:23 +0000 UTC"
java.lang.IllegalArgumentException: Invalid format: "2021-02-03 23:22:23 +0000 UTC" is malformed at " 23:22:23 +0000 UTC"
在将 String 解析为 Datetime Java 时遇到异常,有人可以帮忙吗?
尝试了各种格式,例如:
yyyy-MM-dd'T'HH:mm:ss'Z'
yyyy-MM-dd'T'HH:mm:ssZ
yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
yyyy-MM-dd HH:mm:ss.SSS
(yyyy-MM-dd'T'HH:mm:ss'Z').withZone(UTC)
【问题讨论】:
-
我搜索了很多 StackOverflow 帖子,但找不到答案。
-
您在使用 Joda-Time 库吗?如果是,请编辑问题并说出来,例如通过标记
jodatime。你为什么使用 Joda-Time 而不是 Java 8 Time API? -
您为什么认为输入字符串
2021-02-03 23:22:23 +0000 UTC会解析为模式yyyy-MM-dd'T'HH:mm:ss.SSS'Z'。他们甚至没有接近匹配。首先,该模式指定日期部分和时间部分之间必须有一个T,但输入有一个空格。我强烈建议您在盲目尝试其他随机模式之前阅读文档了解该模式的工作原理。 -
@Andreas 是的,我正在使用
org.joda.time.format.DateTimeFormat。输入是固定的,格式不取决于我。我正在尝试从字符串中获取 DateTime 对象。那么鉴于输入字符串是不可变的,我怎样才能将这种格式的字符串转换为 DateTime 对象? -
输入格式可能不取决于您,但格式 pattern 是,因此您阅读documentation 并了解该模式的工作原理(例如
'T'意味着以及为什么它不适用于您的案例),因此您可以做出更好的尝试,而不是仅仅从网上抓取一个模式,并要求我们为您编写代码。 ---.withZone(UTC)问题中的第 5 个变体非常错误,它毫无疑问地证明了您从未费心阅读文档。