-
Bug
-
Resolution: Fixed
-
P2
-
6u4
-
b03
-
x86
-
windows
-
Verified
KernelJRE picks wrong TimeZone.
For the TimeZone: America/Los_Angeles and Locale :en_US
KernalJRE picks the ZONE as GMT but it should be PST.
<tescase>
import java.util.*;
public class Foo {
private static String[] calendar_formats = {
"%ts' (0 - 99...?)",
"%tz (-1200 - +1200) ZONE_NUMERIC",
"%tZ ZONE (symbol)",
" DATE_TIME %tc (Sat Nov 04 12:02:33 EST 1999)",
};
public static void main(String... arg) {
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
Locale local = new Locale("en_US");
Calendar c = new GregorianCalendar(tz, local);
c.clear();
c.set(1977, 10, 15);
StringBuffer sb = new StringBuffer(58);
Formatter formatter = new Formatter(sb);
for(String format: calendar_formats) {
formatter.format(format+" \n",c);
}
System.out.println(sb.toString());
}
}
</testcase>
<output with kernalJRE>
F:\Kernal>f:\jre1.6.0_02\bin\java Foo
248400000' (0 - 99...?)
+0000 (-1200 - +1200) ZONE_NUMERIC
GMT ZONE (symbol)
DATE_TIME Tue Nov 15 00:00:00 GMT 1977 (Sat Nov 04 12:02:33 EST 1999)
F:\Kernal>f:\jre1.6.0_02\bin\java -version
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b99)
Java HotSpot(TM) Client VM (build 1.7.0-internal, mixed mode)
</output with kernalJRE>
<NormalJRE>
F:\Kernal>java Foo
248428800' (0 - 99...?)
-0800 (-1200 - +1200) ZONE_NUMERIC
PST ZONE (symbol)
DATE_TIME Tue Nov 15 00:00:00 PST 1977 (Sat Nov 04 12:02:33 EST 1999)
F:\Kernal>java -version
java version "1.7.0-ea"
Java(TM) SE Runtime Environment (build 1.7.0-ea-b15)
Java HotSpot(TM) Client VM (build 1.7.0-ea-b15, mixed mode)
</NormalJRE>
Simplified testcase:
<testcase>
import java.text.*;
import java.util.*;
class GetInstanceTimeZone {
public static void main(String[] args) throws Exception {
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("PST"));
TimeZone tz = cal.getTimeZone();
if (tz.getID() != "PST") {
System.out.println("Test Failed to getInstance(TimeZone)");
System.out.println("Expected: PST");
System.out.println("Actual : "+tz.getID());
}
}
}
</tescase>
For the TimeZone: America/Los_Angeles and Locale :en_US
KernalJRE picks the ZONE as GMT but it should be PST.
<tescase>
import java.util.*;
public class Foo {
private static String[] calendar_formats = {
"%ts' (0 - 99...?)",
"%tz (-1200 - +1200) ZONE_NUMERIC",
"%tZ ZONE (symbol)",
" DATE_TIME %tc (Sat Nov 04 12:02:33 EST 1999)",
};
public static void main(String... arg) {
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
Locale local = new Locale("en_US");
Calendar c = new GregorianCalendar(tz, local);
c.clear();
c.set(1977, 10, 15);
StringBuffer sb = new StringBuffer(58);
Formatter formatter = new Formatter(sb);
for(String format: calendar_formats) {
formatter.format(format+" \n",c);
}
System.out.println(sb.toString());
}
}
</testcase>
<output with kernalJRE>
F:\Kernal>f:\jre1.6.0_02\bin\java Foo
248400000' (0 - 99...?)
+0000 (-1200 - +1200) ZONE_NUMERIC
GMT ZONE (symbol)
DATE_TIME Tue Nov 15 00:00:00 GMT 1977 (Sat Nov 04 12:02:33 EST 1999)
F:\Kernal>f:\jre1.6.0_02\bin\java -version
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b99)
Java HotSpot(TM) Client VM (build 1.7.0-internal, mixed mode)
</output with kernalJRE>
<NormalJRE>
F:\Kernal>java Foo
248428800' (0 - 99...?)
-0800 (-1200 - +1200) ZONE_NUMERIC
PST ZONE (symbol)
DATE_TIME Tue Nov 15 00:00:00 PST 1977 (Sat Nov 04 12:02:33 EST 1999)
F:\Kernal>java -version
java version "1.7.0-ea"
Java(TM) SE Runtime Environment (build 1.7.0-ea-b15)
Java HotSpot(TM) Client VM (build 1.7.0-ea-b15, mixed mode)
</NormalJRE>
Simplified testcase:
<testcase>
import java.text.*;
import java.util.*;
class GetInstanceTimeZone {
public static void main(String[] args) throws Exception {
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("PST"));
TimeZone tz = cal.getTimeZone();
if (tz.getID() != "PST") {
System.out.println("Test Failed to getInstance(TimeZone)");
System.out.println("Expected: PST");
System.out.println("Actual : "+tz.getID());
}
}
}
</tescase>