Support parsing long millisecond timestamps in InstantFormatter
This commit adds support of parsing a simple long from a String and turning it to an `Instant` by considering it represents a timestamp in milliseconds (see `Instant.ofEpochMilli`). Failing to parse a long from the String, the previous algorithm is used: first check for an RFC-1123 representation then an ISO_INSTANT representation. See gh-30312 Closes gh-30546
This commit is contained in:
committed by
GitHub
parent
7150c23e93
commit
4d8f6c1b41
@@ -41,13 +41,18 @@ public class InstantFormatter implements Formatter<Instant> {
|
||||
|
||||
@Override
|
||||
public Instant parse(String text, Locale locale) throws ParseException {
|
||||
if (text.length() > 0 && Character.isAlphabetic(text.charAt(0))) {
|
||||
// assuming RFC-1123 value a la "Tue, 3 Jun 2008 11:05:30 GMT"
|
||||
return Instant.from(DateTimeFormatter.RFC_1123_DATE_TIME.parse(text));
|
||||
try {
|
||||
return Instant.ofEpochMilli(Long.parseLong(text));
|
||||
}
|
||||
else {
|
||||
// assuming UTC instant a la "2007-12-03T10:15:30.00Z"
|
||||
return Instant.parse(text);
|
||||
catch (NumberFormatException ex) {
|
||||
if (text.length() > 0 && Character.isAlphabetic(text.charAt(0))) {
|
||||
// assuming RFC-1123 value a la "Tue, 3 Jun 2008 11:05:30 GMT"
|
||||
return Instant.from(DateTimeFormatter.RFC_1123_DATE_TIME.parse(text));
|
||||
}
|
||||
else {
|
||||
// assuming UTC instant a la "2007-12-03T10:15:30.00Z"
|
||||
return Instant.parse(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user