Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8084008 | emb-9 | Xueming Shen | P3 | Resolved | Fixed | team |
public class Test {
private static final DateTimeFormatter FORMAT = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR, 1, 9, SignStyle.NORMAL)
.appendLiteral('-')
.appendValue(ChronoField.MONTH_OF_YEAR, 1, 2, SignStyle.NEVER)
.appendLiteral('-')
.appendValue(ChronoField.DAY_OF_MONTH, 1, 2, SignStyle.NEVER)
.optionalStart() // time component
.appendLiteral(' ')
.appendValue(ChronoField.HOUR_OF_DAY, 1, 2, SignStyle.NEVER)
.appendLiteral(':')
.appendValue(ChronoField.MINUTE_OF_HOUR, 1, 2, SignStyle.NEVER)
.appendLiteral(':')
.appendValue(ChronoField.SECOND_OF_MINUTE, 1, 2, SignStyle.NEVER)
.optionalStart() // nanos
.appendLiteral('.')
.appendFraction(ChronoField.NANO_OF_SECOND, 1, 9, false)
.optionalEnd() // nanos
.optionalEnd() // time componont
.optionalStart() // zone or offset
.appendLiteral(' ')
.appendZoneOrOffsetId() //TODO doesn't work as it should due to bug in JRE
.optionalEnd() // zone or offset
.toFormatter();
public static void main(String[] args) throws Exception {
for (String s : new String[] {"1970-01-01 00:00:00 +00:00", "1999-12-31 23:59:59 -08:00"}) {
try {
System.out.println("\t"+OffsetDateTime.parse(s, FORMAT));
}
catch (Exception e) {
System.err.println("\t"+e);
}
}
}
}
private static final DateTimeFormatter FORMAT = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR, 1, 9, SignStyle.NORMAL)
.appendLiteral('-')
.appendValue(ChronoField.MONTH_OF_YEAR, 1, 2, SignStyle.NEVER)
.appendLiteral('-')
.appendValue(ChronoField.DAY_OF_MONTH, 1, 2, SignStyle.NEVER)
.optionalStart() // time component
.appendLiteral(' ')
.appendValue(ChronoField.HOUR_OF_DAY, 1, 2, SignStyle.NEVER)
.appendLiteral(':')
.appendValue(ChronoField.MINUTE_OF_HOUR, 1, 2, SignStyle.NEVER)
.appendLiteral(':')
.appendValue(ChronoField.SECOND_OF_MINUTE, 1, 2, SignStyle.NEVER)
.optionalStart() // nanos
.appendLiteral('.')
.appendFraction(ChronoField.NANO_OF_SECOND, 1, 9, false)
.optionalEnd() // nanos
.optionalEnd() // time componont
.optionalStart() // zone or offset
.appendLiteral(' ')
.appendZoneOrOffsetId() //TODO doesn't work as it should due to bug in JRE
.optionalEnd() // zone or offset
.toFormatter();
public static void main(String[] args) throws Exception {
for (String s : new String[] {"1970-01-01 00:00:00 +00:00", "1999-12-31 23:59:59 -08:00"}) {
try {
System.out.println("\t"+OffsetDateTime.parse(s, FORMAT));
}
catch (Exception e) {
System.err.println("\t"+e);
}
}
}
}
- backported by
-
JDK-8084008 DateTimeFormatter.appendZoneOrOffsetId() fails to resolve a ZoneOffset for OffsetDateTime
-
- Resolved
-