将格式为“yyyy-mm-ddTHH:MM:SS+/-0000”的日期转换为“yyyy-mm-ddTHH:MM:SSZ”

Nis*_*ant 0 java datetime java-8 java-time

我需要将日期字符串转换为另一种特定格式。

例如:我有一个日期可以作为YYYY-MM-DDorYYYY-MM-DDThh:mm:ss±0000并且我需要将其转换为 something "yyyy-mm-ddTHH:MM:SSZ"

我使用 Java 8 API 尝试了一些东西,但找不到出路。

And*_*eas 5

试试这个(Java 8):

String input = "2016-10-14T14:19:40-04:00";
String output = ZonedDateTime.parse(input).toInstant().toString();
System.out.println(output); // prints 2016-10-14T18:19:40Z
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为ZonedDateTimeby 使用的主要格式parse()ISO_ZONED_DATE_TIME,因此它将以您描述的格式解析输入。

您请求的输出格式恰好是 的默认格式Instant,由其toString()方法返回,即ISO_INSTANT格式。

两者之间的转化(ZonedDateTimeInstant使用toInstant()方法)将执行时区调整必要的。