Snap for 8055317 from e42572a24e64f8511dbbf2e83f79fb08303de1a0 to sc-v2-release

Change-Id: I439b97c65b732136f4da8800e6727de3dbb53a1a
diff --git a/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java b/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
index 3ea4378..baa3344 100644
--- a/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
+++ b/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
@@ -156,21 +156,40 @@
     }
 
     // http://b/7955614
-    public void test_getZoneStrings_Apia() throws Exception {
+    public void test_getZoneStrings_Apia() {
         String[][] array = DateFormatSymbols.getInstance(Locale.US).getZoneStrings();
+
         for (int i = 0; i < array.length; ++i) {
             String[] row = array[i];
             // Pacific/Apia is somewhat arbitrary; we just want a zone we have to generate
             // "GMT" strings for the short names.
             if (row[0].equals("Pacific/Apia")) {
+                TimeZone apiaTz = TimeZone.getTimeZone("Pacific/Apia");
                 assertEquals("Apia Standard Time", row[1]);
-                assertEquals("GMT+13:00", row[2]);
+                assertEquals(formattedStandardTimeOffset(apiaTz), row[2]);
                 assertEquals("Apia Daylight Time", row[3]);
-                assertEquals("GMT+14:00", row[4]);
+                assertEquals(formattedDstOffset(apiaTz), row[4]);
             }
         }
     }
 
+    private static String formattedStandardTimeOffset(TimeZone tz) {
+        return formattedOffset(tz.getRawOffset());
+    }
+
+    private static String formattedDstOffset(TimeZone tz) {
+        return formattedOffset(tz.getRawOffset() + tz.getDSTSavings());
+    }
+
+    private static String formattedOffset(int offset) {
+        String pattern = "GMT%+d:%02d";
+        int millisInHour = 60 * 60 * 1_000;
+        int hours = offset / millisInHour;
+        int minutes = (offset - hours * millisInHour) / 1_000 / 60;
+
+        return String.format(pattern, hours, minutes);
+    }
+
     public void test_setZoneStrings_checks_dimensions() throws Exception {
         DateFormatSymbols dfs = DateFormatSymbols.getInstance();
         String[][] zoneStrings = dfs.getZoneStrings();
diff --git a/luni/src/test/java/libcore/java/util/TimeZoneTest.java b/luni/src/test/java/libcore/java/util/TimeZoneTest.java
index a686534..9b8ea47 100644
--- a/luni/src/test/java/libcore/java/util/TimeZoneTest.java
+++ b/luni/src/test/java/libcore/java/util/TimeZoneTest.java
@@ -319,12 +319,16 @@
     }
 
     // http://b/7955614
-    public void testApia() throws Exception {
+    public void testApia() {
         TimeZone tz = TimeZone.getTimeZone("Pacific/Apia");
         assertEquals("Apia Daylight Time", tz.getDisplayName(true, TimeZone.LONG, Locale.US));
         assertEquals("Apia Standard Time", tz.getDisplayName(false, TimeZone.LONG, Locale.US));
-        assertEquals("GMT+14:00", tz.getDisplayName(true, TimeZone.SHORT, Locale.US));
-        assertEquals("GMT+13:00", tz.getDisplayName(false, TimeZone.SHORT, Locale.US));
+
+        long samoaStandardTime = 1630315635000L; // 30 Aug 2021
+        long samoaDst = 1614504435000L; // 28 Feb 2021
+
+        assertEquals(13 * 60 * 60 * 1_000, tz.getOffset(samoaStandardTime));
+        assertEquals(14 * 60 * 60 * 1_000, tz.getOffset(samoaDst));
     }
 
     private static boolean isGmtString(String s) {