Skip to content

Commit 250ff86

Browse files
author
Justin Lu
committed
8349000: Performance improvement for Currency.isPastCutoverDate(String)
Reviewed-by: naoto, aturbanov
1 parent ee4caa4 commit 250ff86

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

src/java.base/share/classes/java/util/Currency.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@
3232
import java.io.InputStream;
3333
import java.io.IOException;
3434
import java.io.Serializable;
35-
import java.text.ParseException;
36-
import java.text.SimpleDateFormat;
35+
import java.time.LocalDateTime;
36+
import java.time.ZoneOffset;
37+
import java.time.format.DateTimeFormatter;
38+
import java.time.format.DateTimeParseException;
3739
import java.util.concurrent.ConcurrentHashMap;
3840
import java.util.concurrent.ConcurrentMap;
3941
import java.util.regex.Pattern;
@@ -1156,7 +1158,7 @@ private static Optional<CurrencyProperty> getValidEntry(String ctry,
11561158
&& !isPastCutoverDate(prop.date)) {
11571159
prop = null;
11581160
}
1159-
} catch (ParseException ex) {
1161+
} catch (DateTimeParseException ex) {
11601162
prop = null;
11611163
}
11621164
}
@@ -1196,15 +1198,12 @@ private static boolean containsInconsistentInstances(
11961198
|| prop.fraction != fractionDigit);
11971199
}
11981200

1199-
private static boolean isPastCutoverDate(String s)
1200-
throws ParseException {
1201-
SimpleDateFormat format = new SimpleDateFormat(
1202-
"yyyy-MM-dd'T'HH:mm:ss", Locale.ROOT);
1203-
format.setTimeZone(TimeZone.getTimeZone("UTC"));
1204-
format.setLenient(false);
1205-
long time = format.parse(s.trim()).getTime();
1206-
return System.currentTimeMillis() > time;
1207-
1201+
// cutOver adheres to ISO8601 Local Date Time format (excluding nano secs)
1202+
private static boolean isPastCutoverDate(String cutOver) {
1203+
return System.currentTimeMillis() >
1204+
LocalDateTime.parse(cutOver, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
1205+
.toInstant(ZoneOffset.UTC)
1206+
.toEpochMilli();
12081207
}
12091208

12101209
private static void info(String message, Throwable t) {

0 commit comments

Comments
 (0)