<i18n dev> Incorrect TimeZone display name when DST not applicable / disabled

Deven You youdwei at linux.vnet.ibm.com
Wed May 9 23:24:49 PDT 2012


Anyone could take a look?

On 05/07/2012 05:23 PM, Deven You wrote:
> Hi All,
>
> JDK displays incorrect TimeZone display name when DST (Daylight Saving 
> Time) is disable in the native Time Zone settings on Windows XP/2003 
> platforms and the Time Zone does not support DST.
>
> Steps to re-create the problem
>
> 1. In the Windows Date and Time Properties dialog, set the time zone 
> to one that uses DST (e.g. Greenwich Mean Time).
> 2. Disable the 'Automatically adjust clock for Daylight Saving 
> Changes' option.
> 3. Change the time zone to one that does not use DST (e.g. India 
> Standard Time - (GMT+5:30) Chennai,Kolkata,Mumbai,New Delhi)
> 4. Compile and run the testcase[1]
>
> Observed output:
> GMT+05:30
>
> Expected output:
> India Standard Tim
>
> There is already a sunbug[2] for this problem, which describes the 
> problem clearly and very detailed. Please refer it for more detail.
> Here is some descriptions from the sunbug:
>
> PROBLEM
> ---------------------------------
> Windows provides an option entitled 'Automatically adjust clock for 
> Daylight Saving Changes' box in the native time zone settings. When 
> checked, the clock is automatically adjusted to the daylight savings 
> time if applicable to that particular timezone.
> More importantly, if this box is unchecked, Windows will ignore any 
> DST timetable in the selected time zone.
>
> Now, the JDK's TimeZone class checks the value of the registry value 
> that corresponds to this option, and modifies the default TimeZone's 
> display name accordingly. This is from the evaluation of CR 4296930, 
> describing the fix made for that CR in JDK 1.4.2:
>
> --------
> When the auto-adjustment is turned off, the platform time zone 
> detection code will create a time zone ID in the "GMT{+|-}hh:mm" form 
> with which a custom TimeZone customer is created. This is because some 
> Windows users turn it off due to incorrect Win32 time zones and choose 
> one based on just the GMT offset. A restriction is that display names 
> are not supported even it just means to use standard time of a correct 
> time zone selection for some other purposes.
> --------
>
> This makes sense for time zones that do use DST. However, our 
> customers have found that if you disable DST in the Windows options 
> for a time zone that uses it, and then switch to a time zone that 
> doesn't use DST, the option remains disabled (i.e. the underlying 
> registry value retains the value that corresponds to the option being 
> disabled).
>
> Under these circumstances the JDK's TimeZone class changes the display 
> name to the "GMT{+|-}hh:mm" format, rather than using the correct 
> name. This is unintuitive, and arguably incorrect.
>
> We believe it would be better to query the time zone to see if DST is 
> actually applicable before deciding whether or not to switch to the 
> "GMT{+|-}hh:mm" format.
>
> Note that this issue is not applicable to Windows Vista/7 because the 
> relevant registry value is reset each time the native time zone is 
> changed, rather than being retained as it is in Windows XP/2003.
>
>
>
>
> I have made a fix which will deal with this situation and avoid the 
> "GMT{+|-}hh:mm" format.
>
> [1] http://cr.openjdk.java.net/~littlee/ojdk-557/webrev.00/ 
> <http://cr.openjdk.java.net/%7Elittlee/ojdk-557/webrev.00/>
> [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7094176
>
> Thanks a lot!
> -- 
> Best Regards,
>
> Deven


-- 
Best Regards,

Deven

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/i18n-dev/attachments/20120510/faa4de25/attachment.html 


More information about the i18n-dev mailing list