Fix java.util.Formatter "%tz".
Found by jtreg.
diff --git a/libcore/luni/src/main/java/java/util/Formatter.java b/libcore/luni/src/main/java/java/util/Formatter.java
index 0e9b3d2..54e1b51 100644
--- a/libcore/luni/src/main/java/java/util/Formatter.java
+++ b/libcore/luni/src/main/java/java/util/Formatter.java
@@ -2465,13 +2465,15 @@
}
private void transform_z() {
- int zoneOffset = calendar.get(Calendar.ZONE_OFFSET);
- zoneOffset /= 3600000;
- zoneOffset *= 100;
- if (zoneOffset >= 0) {
- result.append('+');
+ long offset = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
+ char sign = '+';
+ if (offset < 0) {
+ sign = '-';
+ offset = -offset;
}
- result.append(paddingZeros(zoneOffset, 4));
+ result.append(sign);
+ result.append(paddingZeros(offset / 3600000, 2));
+ result.append(paddingZeros((offset % 3600000) / 60000, 2));
}
private void transform_p(boolean isLowerCase) {