3838import java .util .Map ;
3939import java .util .Objects ;
4040import java .util .function .Consumer ;
41+ import java .util .stream .Collectors ;
4142
4243class JavaDateFormatter implements DateFormatter {
4344
@@ -58,6 +59,12 @@ class JavaDateFormatter implements DateFormatter {
5859 private final List <DateTimeFormatter > parsers ;
5960 private final DateTimeFormatter roundupParser ;
6061
62+ private JavaDateFormatter (String format , DateTimeFormatter printer , DateTimeFormatter roundupParser , List <DateTimeFormatter > parsers ) {
63+ this .format = format ;
64+ this .printer = printer ;
65+ this .roundupParser = roundupParser ;
66+ this .parsers = parsers ;
67+ }
6168 JavaDateFormatter (String format , DateTimeFormatter printer , DateTimeFormatter ... parsers ) {
6269 this (format , printer , builder -> ROUND_UP_BASE_FIELDS .forEach (builder ::parseDefaulting ), parsers );
6370 }
@@ -155,9 +162,8 @@ public DateFormatter withZone(ZoneId zoneId) {
155162 if (zoneId .equals (zone ())) {
156163 return this ;
157164 }
158-
159- return new JavaDateFormatter (format , printer .withZone (zoneId ),
160- parsers .stream ().map (p -> p .withZone (zoneId )).toArray (size -> new DateTimeFormatter [size ]));
165+ return new JavaDateFormatter (format , printer .withZone (zoneId ), getRoundupParser ().withZone (zoneId ),
166+ parsers .stream ().map (p -> p .withZone (zoneId )).collect (Collectors .toList ()));
161167 }
162168
163169 @ Override
@@ -166,9 +172,8 @@ public DateFormatter withLocale(Locale locale) {
166172 if (locale .equals (locale ())) {
167173 return this ;
168174 }
169-
170- return new JavaDateFormatter (format , printer .withLocale (locale ),
171- parsers .stream ().map (p -> p .withLocale (locale )).toArray (size -> new DateTimeFormatter [size ]));
175+ return new JavaDateFormatter (format , printer .withLocale (locale ), getRoundupParser ().withLocale (locale ),
176+ parsers .stream ().map (p -> p .withLocale (locale )).collect (Collectors .toList ()));
172177 }
173178
174179 @ Override
0 commit comments