我需要将日期字符串转换为另一种特定格式。
例如:我的日期可以是YYYY-MM-DD
或YYYY-MM-DDThh:mm:ss±0000
,我需要将其转换为"yyyy-mm-ddTHH:MM:SSZ"
。
我尝试使用Java 8 API做了一些事情,但找不到出路。
答案 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()
方法在两者之间进行转换(ZonedDateTime
到Instant
)将执行必要的时区调整。
答案 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));