转换日期格式为" yyyy-mm-ddTHH:MM:SS +/- 0000"到" yyyy-mm-ddTHH:MM:SSZ"

时间:2016-10-14 18:01:59

标签: java datetime java-8 java-time

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

例如:我的日期可以是YYYY-MM-DDYYYY-MM-DDThh:mm:ss±0000,我需要将其转换为"yyyy-mm-ddTHH:MM:SSZ"

我尝试使用Java 8 API做了一些事情,但找不到出路。

2 个答案:

答案 0 :(得分:4)

试试这个(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

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

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

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

答案 1 :(得分:0)

试试这个:

SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); // or "YYYY-MM-DDThh:mm:ss±0000"
String dateInString = "1993-11-27";
Date date = inputFormat.parse(dateInString);

SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ssZ");
System.out.println(outputFormat.format(date));