Microsoft KB Archive/233271

= FIX: DateFormat Class Does Not Default to the System Time Zone =

Article ID: 233271

Article Last Modified on 6/14/2006

-

APPLIES TO


 * Microsoft Java Virtual Machine

-



This article was previously published under Q233271



SYMPTOMS
When using the java.text.DateFormat class, you will observe that it properly sets the time/date. However it does not display the time corresponding to the default system time zone set on your computer. Instead, it defaults to the first time zone of the system's locale. (For US English, the default would always be PST/PDT.)



CAUSE
The problem is that the time zone is not set by default in the versions of the Microsoft virtual machine (Microsoft VM) prior to build 3181.



STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

This problem has been fixed in Microsoft VM builds 3181 or later. The latest build is available at:

http://www.microsoft.com/mscorp/java.

If you are using a Microsoft VM build prior to this version, then the workaround is to call setTimeZone on the DateFormat object.



Steps to Reproduce Behavior
 Create a new Console Application project using Microsoft Visual J++ 6.0.  Include the following piece of code in its main method: Calendar now = Calendar.getInstance; DateFormat df = DateFormat.getDateTimeInstance; //df.setTimeZone(TimeZone.getDefault);-->Uncomment this to fix the problem System.out.println(df.format(now.getTime));  Build and execute the above code. This displays the correct date and time. Now open Control Panel, select Date/Time and change the Time Zone to Eastern Time Zone (EST) on your machine. Rerun the above code. It still displays the time as if the machine were set to Pacific Time Zone.</ol>

<div class="references_section">