我需要用joda库解析特定的日期,我不能使用其他库,因为它的java 6,我们没有另一个库在模块中可用。
总之,我有个约会:
2022-08-02T23:00:59Z
之后我需要解析它以进行一些操作,但是当我尝试解析时,我遇到了这个错误:
java.lang.IllegalArgumentException:无效格式:“2022-08- 02 T23:00:59 Z”在“Z”处格式错误
我的代码:
String pattern = "yyyy-MM-dd'T'HH:mm:ss";
String dateString="2022-08-02T23:00:59Z";
DateTimeFormatter date = DateTimeFormat.forPattern(pattern);
DateTime dateTIme = date.parseDateTime(dateString);
也许我做错了什么?
我找不到这个模式的好格式,所以如果有人有想法,非常感谢
2条答案
按热度按时间y4ekin9u1#
根本不需要定义格式化模式。您的输入文本符合Joda-Time中默认使用的ISO 8601标准格式。
从该日期-时间对象生成ISO 8601格式的文本。
2022-08-02T23:00:59.000Z
至于你的格式化模式有什么问题:您的模式包含3个部分(日期、
T
分隔符、时间)。但是你的输入有4个部分,这3个部分加上一个offset-from-UTC,即UTC时间子午线之前或之后的小时-分钟-秒数。字符Z
是+00:00
的缩写,表示偏移量为零。我不能使用其他库,因为它是java 6,而我们在模块中没有其他可用的库
仅供参考,Joda-Time库现在处于维护模式。它的创造者继续创造了它的继任者,java。time 类在JSR 310中定义,并与Java 8+捆绑在一起。这些类的后端支持早期的Java 6和Java 7。参见ThreeTen-Backport项目。
我建议使用该后端端口而不是Joda-Time。ThreeTen-Backport 的API与 java几乎相同。time。这使得最终迁移到 java。time 非常简单,只不过是修改
import
语句。当然,Java 6已经过了生命周期的尽头。
myss37ts2#
欢迎来到SO。你的模式实际上是错误的,因为你没有考虑到“Z”,这代表时区。
正确的模式是:
应该可以