diff --git a/shared/src/main/java/com/android/tools/analytics/AnalyticsSettings.kt b/shared/src/main/java/com/android/tools/analytics/AnalyticsSettings.kt
index b4c73c2..19b784d 100644
--- a/shared/src/main/java/com/android/tools/analytics/AnalyticsSettings.kt
+++ b/shared/src/main/java/com/android/tools/analytics/AnalyticsSettings.kt
@@ -448,7 +448,10 @@
             channel.truncate(0)
             val outputStream = Channels.newOutputStream(channel)
             val writer = OutputStreamWriter(outputStream)
-            gson.toJson(this, writer)
+
+            // Write out using pre-Java9 date format to let older releases read the file correctly.
+            val datePatternJava8 = "MMM d, y h:mm:ss a"
+            GsonBuilder().setDateFormat(datePatternJava8).create().toJson(this, writer)
             writer.flush()
             outputStream.flush()
           }
diff --git a/shared/src/test/java/com/android/tools/analytics/AnalyticsSettingsTest.kt b/shared/src/test/java/com/android/tools/analytics/AnalyticsSettingsTest.kt
index 097f5cf..45146e5 100644
--- a/shared/src/test/java/com/android/tools/analytics/AnalyticsSettingsTest.kt
+++ b/shared/src/test/java/com/android/tools/analytics/AnalyticsSettingsTest.kt
@@ -19,6 +19,7 @@
 import com.android.utils.DateProvider
 import com.android.utils.ILogger
 import com.google.common.base.Charsets
+import com.google.gson.GsonBuilder
 import com.google.protobuf.ByteString
 import org.junit.Assert.assertArrayEquals
 import org.junit.Assert.assertEquals
@@ -34,6 +35,7 @@
 import java.io.IOException
 import java.math.BigInteger
 import java.nio.file.Files
+import java.nio.file.Paths
 import java.util.Arrays
 import java.util.Date
 import java.util.UUID
@@ -585,4 +587,25 @@
       EnvironmentFakes.setSystemEnvironment()
     }
   }
+
+  @Test
+  fun useJava8DateFormat() {
+    EnvironmentFakes.setCustomAndroidSdkHomeEnvironment(testConfigDir.root.toString())
+    try {
+      AnalyticsSettings.setInstanceForTest(AnalyticsSettingsData().apply {
+        userId = "db3dd15b-053a-4066-ac93-04c50585edc2"
+        optedIn = true
+        lastSentimentAnswerDate = Date(115, 4, 17, 14, 23, 45)
+      })
+      AnalyticsSettings.saveSettings()
+      val analysticsSettingsContents =
+        String(Files.readAllBytes(Paths.get(testConfigDir.root.toString(), "analytics.settings")), Charsets.UTF_8)
+      val lastSentimentAnswerDate =
+        GsonBuilder().create().fromJson(analysticsSettingsContents, Map::class.java)["lastSentimentAnswerDate"]
+      assertEquals("May 17, 2015 2:23:45 PM", lastSentimentAnswerDate)
+    }
+    finally {
+      EnvironmentFakes.setSystemEnvironment()
+    }
+  }
 }
