diff --git a/gson/src/main/java/com/google/gson/internal/PreJava20DateFormatProvider.java b/gson/src/main/java/com/google/gson/internal/PreJava20DateFormatProvider.java index 4079eeebc4..3b39748e2c 100644 --- a/gson/src/main/java/com/google/gson/internal/PreJava20DateFormatProvider.java +++ b/gson/src/main/java/com/google/gson/internal/PreJava20DateFormatProvider.java @@ -15,4 +15,13 @@ public class PreJava20DateFormatProvider { public static DateFormat getUSDateFormat() { return new SimpleDateFormat("MMM d, y, h:mm:ss a", Locale.US); } + + /** + * Compatibility fix for old Javas runtime, if date was written by JDK 20 or greater + * @return Returns the same DateFormat as {@code DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.US)} + * in Java 20 or upper. + */ + public static DateFormat getNewUSDateFormat() { + return new SimpleDateFormat("MMM d, y, h:mm:ss a", Locale.US); + } } diff --git a/gson/src/main/java/com/google/gson/internal/bind/DateTypeAdapter.java b/gson/src/main/java/com/google/gson/internal/bind/DateTypeAdapter.java index bd95816946..415459b33d 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/DateTypeAdapter.java +++ b/gson/src/main/java/com/google/gson/internal/bind/DateTypeAdapter.java @@ -68,6 +68,8 @@ public DateTypeAdapter() { } if (JavaVersion.isJava20OrLater()) { dateFormats.add(PreJava20DateFormatProvider.getUSDateFormat()); + } else { + dateFormats.add(PreJava20DateFormatProvider.getNewUSDateFormat()); } }