|
|
@@ -88,7 +88,7 @@ public class DateTimeReader {
|
|
|
|
|
|
public static final DateTimeReader TIME = new DateTimeReader(TIME_PARSER);
|
|
|
|
|
|
- private final DateTimeReader parent;
|
|
|
+ private final DateTimeReader fallback;
|
|
|
|
|
|
private final DateTimeFormatter parser;
|
|
|
|
|
|
@@ -106,16 +106,20 @@ public class DateTimeReader {
|
|
|
this(null, format, null, null);
|
|
|
}
|
|
|
|
|
|
+ public DateTimeReader withFallback(DateTimeReader fallback) {
|
|
|
+ return new DateTimeReader(fallback, parser, sourceZone, targetZone);
|
|
|
+ }
|
|
|
+
|
|
|
public DateTimeReader withFormat(String newFormat) {
|
|
|
return new DateTimeReader(DateTimeFormatter.ofPattern(newFormat));
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withFormat(DateTimeFormatter newFormat) {
|
|
|
- return new DateTimeReader(null, newFormat, sourceZone, targetZone);
|
|
|
+ return new DateTimeReader(fallback, newFormat, sourceZone, targetZone);
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withLocale(Locale newLocale) {
|
|
|
- return new DateTimeReader(parent, parser.withLocale(newLocale), sourceZone, targetZone);
|
|
|
+ return new DateTimeReader(fallback, parser.withLocale(newLocale), sourceZone, targetZone);
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withLocale(String newLocale) {
|
|
|
@@ -127,7 +131,7 @@ public class DateTimeReader {
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withZone(ZoneId newZone) {
|
|
|
- return new DateTimeReader(parent, parser, newZone, newZone);
|
|
|
+ return new DateTimeReader(fallback, parser, newZone, newZone);
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withZone(String newZone) {
|
|
|
@@ -135,11 +139,11 @@ public class DateTimeReader {
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withoutZone() {
|
|
|
- return new DateTimeReader(parent, parser, null, null);
|
|
|
+ return new DateTimeReader(fallback, parser, null, null);
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withSourceZone(ZoneId newZone) {
|
|
|
- return new DateTimeReader(parent, parser, newZone, targetZone);
|
|
|
+ return new DateTimeReader(fallback, parser, newZone, targetZone);
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withSourceZone(String newZone) {
|
|
|
@@ -147,11 +151,11 @@ public class DateTimeReader {
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withoutSourceZone() {
|
|
|
- return new DateTimeReader(parent, parser, null, targetZone);
|
|
|
+ return new DateTimeReader(fallback, parser, null, targetZone);
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withTargetZone(ZoneId newZone) {
|
|
|
- return new DateTimeReader(parent, parser, sourceZone, newZone);
|
|
|
+ return new DateTimeReader(fallback, parser, sourceZone, newZone);
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withTargetZone(String newZone) {
|
|
|
@@ -159,7 +163,7 @@ public class DateTimeReader {
|
|
|
}
|
|
|
|
|
|
public DateTimeReader withoutTargetZone() {
|
|
|
- return new DateTimeReader(parent, parser, sourceZone, null);
|
|
|
+ return new DateTimeReader(fallback, parser, sourceZone, null);
|
|
|
}
|
|
|
|
|
|
public ZonedDateTime parse(String input) {
|
|
|
@@ -169,8 +173,8 @@ public class DateTimeReader {
|
|
|
try {
|
|
|
return newDateTime(parser.parse(input, v -> v));
|
|
|
} catch (DateTimeParseException e) {
|
|
|
- if(parent != null) {
|
|
|
- return parent.parse(input);
|
|
|
+ if(fallback != null) {
|
|
|
+ return fallback.parse(input);
|
|
|
}
|
|
|
throw e;
|
|
|
}
|
|
|
@@ -183,8 +187,8 @@ public class DateTimeReader {
|
|
|
try {
|
|
|
return newDate(parser.parse(input, v -> v));
|
|
|
} catch (DateTimeParseException e) {
|
|
|
- if(parent != null) {
|
|
|
- return parent.parseDate(input);
|
|
|
+ if(fallback != null) {
|
|
|
+ return fallback.parseDate(input);
|
|
|
}
|
|
|
throw e;
|
|
|
}
|
|
|
@@ -197,8 +201,8 @@ public class DateTimeReader {
|
|
|
try {
|
|
|
return newTime(parser.parse(input, v -> v));
|
|
|
} catch (DateTimeParseException e) {
|
|
|
- if(parent != null) {
|
|
|
- return parent.parseTime(input);
|
|
|
+ if(fallback != null) {
|
|
|
+ return fallback.parseTime(input);
|
|
|
}
|
|
|
throw e;
|
|
|
}
|