Fix incorrect GMT offset in display

- android.icu.impl.TimeZoneAdapter doesn't fully implement
java.util.TimeZone, e.g. does not override getOffset(long date).
TimeZoneAdapter isn't a public API in ICU/Android. It shouldn't be
used in the first place

Bug: 77223510
Test: m RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.datetime.timezone
Change-Id: Ic0d7794326948796dcc5cc0b268ef634a74803c4
diff --git a/src/com/android/settings/datetime/timezone/TimeZoneInfo.java b/src/com/android/settings/datetime/timezone/TimeZoneInfo.java
index 8cb1d4e..0366390 100644
--- a/src/com/android/settings/datetime/timezone/TimeZoneInfo.java
+++ b/src/com/android/settings/datetime/timezone/TimeZoneInfo.java
@@ -167,7 +167,7 @@
         public TimeZoneInfo format(TimeZone timeZone) {
             final String id = timeZone.getID();
             final TimeZoneNames timeZoneNames = mTimeZoneFormat.getTimeZoneNames();
-            final java.util.TimeZone javaTimeZone = android.icu.impl.TimeZoneAdapter.wrap(timeZone);
+            final java.util.TimeZone javaTimeZone = java.util.TimeZone.getTimeZone(id);
             final CharSequence gmtOffset = ZoneGetter.getGmtOffsetText(mTimeZoneFormat, mLocale,
                 javaTimeZone, mNow);
             return new TimeZoneInfo.Builder(timeZone)
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java
index c6f5fe6..32975bc 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/timezone/TimeZoneInfoTest.java
@@ -43,4 +43,13 @@
         assertThat(timeZoneInfo.getStandardName()).isEqualTo("Pacific Standard Time");
         assertThat(timeZoneInfo.getDaylightName()).isEqualTo("Pacific Daylight Time");
     }
+
+    @Test
+    public void getGmtOffset_zoneLordHowe_correctGmtOffset() {
+        Date date = new Date(1514764800000L); // 00:00 1/1/2018 GMT
+        Formatter formatter = new Formatter(Locale.US, date);
+
+        TimeZoneInfo timeZoneInfo = formatter.format("Australia/Lord_Howe");
+        assertThat(timeZoneInfo.getGmtOffset().toString()).isEqualTo("GMT+11:00");
+    }
 }