FIX: Daylight Savings Time Transition and GMT Time Zone Errors
ID: Q194768
|
The information in this article applies to:
-
Microsoft SDK for Java, versions 2.0, 2.01, 2.02
-
Microsoft Win32 Virtual Machine for Java
SYMPTOMS
Errors may occur in calculations involving Daylight Savings Time, or those
involving conversions to and from Universal time ("UTC" or "Greenwich Mean
Time").
Specifically, the starting and ending dates for Daylight Savings Time may
be incorrect. Also, the GMT time zone is treated as though it enters
Daylight Savings Time, when it should not. This affects the java.util.Date
and java.util.Calendar classes, and methods of other classes that may
depend on them.
CAUSE
The java.util.TimeZone and java.util.SimpleTimeZone classes initialized the
GMT time zone incorrectly, and improperly performed calculations
determining Daylight Savings Time.
RESOLUTION
Install a version of the Microsoft virtual machine in which these
problems have been fixed (see STATUS section below).
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This bug has been corrected in the
Microsoft virtual machine, version 5.00.2829 and later, which can
be found in the Microsoft SDK for Java version 3.0 and later. Please refer
to the References section for more information.
MORE INFORMATIONSteps to Reproduce Behavior
- Enter the following code into a file named DateBug.java, and compile it.
import java.util.Date;
public class DateBug
{
public static void main( String[] arg ) throws Exception
{
showDate( 98, 1, 1 );
showDate( 98, 3, 28 );
showDate( 98, 3, 29 );
showDate( 98, 4, 4 );
showDate( 98, 4, 5 );
showDate( 98, 7, 21 );
showDate( 98, 10, 24 );
showDate( 98, 10, 25 );
showDate( 98, 10, 30 );
showDate( 98, 10, 31 );
showDate( 98, 12, 20 );
System.in.read();
}
static void showDate(int year, int month, int day) {
Date d = new Date(year, month-1, day, 12, 0, 0);
System.out.println(d + " local <=> GMT " + d.toGMTString());
}
}
- Execute the program using the command "jview DateBug".
You will observe that between Friday, March 27, and Sunday, March 29, the
GMT time is moved forward, as though it were in Daylight Savings Time.
Also, (at least in the United States) you will observe that Daylight
Savings Time for the local time zone begins a day early (Saturday, April 4)
and ends several days late (it should end Sunday, October 26).
REFERENCES
The latest Microsoft SDK for Java is available at the following Web site:
http://www.microsoft.com/java/
For the latest Knowledge Base articles and other support information on
Visual J++ and the SDK for Java, see the following pages on the Microsoft
Technical Support site:
http://support.microsoft.com/support/visualj/
http://support.microsoft.com/support/java/ © Microsoft Corporation 1998, All Rights Reserved. Contributions by Derek
R. Smith, Microsoft Corporation
Additional query words:
Keywords : kbInternet kbJavaVM kbSDKJava200 kbSDKJava201 kbSDKJava202
Version : WINDOWS:2.0,2.01,2.02; :
Platform : WINDOWS
Issue type : kbbug
|