在使用相同的DateTimeFormatter
时,我发现类似的输入之间存在不一致性。我需要将其与另一个日期时间输入源进行比较。
例如,给定以下输入:
2020-06-29T01:00:00+01:00 -> my date time formatter -> 2020-06-29T01:00:00+01:00
2021-08-18T21:00:00+0000 -> my date time formatter -> 2021-08-18T21:00:00Z
我希望输出始终为
YYYY-mm-ddT00:00:00Z
格式,因此第二个输入将得到我想要的结果。我目前的格式化方式:
DateTimeFormatter FORMATTER = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR, 4)
.optionalStart()
.appendLiteral("-")
.optionalEnd()
.appendValue(ChronoField.MONTH_OF_YEAR, 2)
.optionalStart()
.appendLiteral("-")
.optionalEnd()
.appendValue(ChronoField.DAY_OF_MONTH, 2)
.appendLiteral('T')
.appendPattern("HH':'mm':'ss[XXX][X]")
.toFormatter();
public OffsetDateTime convert(String dateTime) {
return OffsetDateTime.parse(dateTime, FORMATTER);
}
public String getDateTimeString(OffsetDateTime offsetDateTime) {
return offsetDateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
public void doStuff(String input) {
OffsetDateTime odt = convert(input);
String finalResult = getDateTimeString(odt);
}
..
doStuff(input);
我已经花了几个小时来研究这个,但是对我来说文档不够清晰,我一直遇到各种问题。有什么提示吗?