java – 如何使用timezone解析datetime,但没有T或纳秒

我正在尝试以下列格式解析日期时间字符串:

2019-02-22 19:29:43+00:00

我正在按照本指南操作:
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

这个特定的行似乎是我正在尝试解析的时间戳字符串:

Z       zone-offset                 offset-Z          +0000; -0800; -08:00;

这是我创建的,给出了指南:

String input = "2019-02-22 19:29:43+00:00";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssX");
LocalDateTime parsed = LocalDateTime.parse(input,formatter);

但我得到这个错误

java.time.format.DateTimeParseException: Text '2019-02-22 19:29:43+00:00' Could not be parsed,unparsed text found at index 22

解决方法

试试yyyy-MM-dd HH:mm:ssXXX.这应该可以解决您的问题.

Offset X and x:

One letter outputs just the hour,such as ‘+01’,unless the minute is non-zero in which case the minute is also output,such as ‘+0130’.

Two letters outputs the hour and minute,without a colon,such as ‘+0130’.

Three letters outputs the hour and minute,with a colon,such as ‘+01:30’.

Four letters outputs the hour and minute and optional second,such as ‘+013015’.

Five letters outputs the hour and minute and optional second,such as ‘+01:30:15’.

Six or more letters throws IllegalArgumentException.

从表格下面的描述:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

编辑:

如果你想用该模式格式化日期并想要相同的输出字符串,你应该使用yyyy-MM-dd HH:mm:ssxxx(参见下面的Andreas评论).

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...