commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rafael Sisto (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LANG-850) DateUtils.truncatedCompareTo not working properly with DST timezones
Date Wed, 07 Nov 2012 03:18:13 GMT

    [ https://issues.apache.org/jira/browse/LANG-850?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13492091#comment-13492091
] 

Rafael Sisto commented on LANG-850:
-----------------------------------

Thanks for clearing that, so the method truncates taking account of the current timezone of
the calendar.

I was having problems when comparing:
1-an XMLGregorianCalendar converted to Calendar (XMLGregorianCalendar doesn't have the concept
of DST, so the timezone is converted to GMT-2 in this timezone) with
2-a GregorianCalendar created with "new GregorianCalendar()" which has a timezone of "America/Montevideo".

According to the comments, my code should set the timezone of the converted XMLGregorianCalendar
to America/Montevideo before using the truncate method.

Thanks again, I had thought that the truncatedCompareTo should compare dates managing the
timezone before comparing.
                
> DateUtils.truncatedCompareTo not working properly with DST timezones
> --------------------------------------------------------------------
>
>                 Key: LANG-850
>                 URL: https://issues.apache.org/jira/browse/LANG-850
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.time.*
>    Affects Versions: 3.1
>         Environment: java version "1.6.0_32"
> Windows 7
> Timezone: America/Montevideo
>            Reporter: Rafael Sisto
>            Priority: Minor
>              Labels: patch
>
> The method truncatedCompareTo doesn't work properly when comparing 2 calendars in a different
timezone (when one of them is "America/Montevideo", the same as the machine running the test).
> Here is the sample code to reproduce.
> The Timezone of the computer has to be set to UTC-3 Montevideo, with DST.
> {quote}
> GregorianCalendar c1 = new GregorianCalendar(2012,10,6);
> System.out.println("The time: " + c1.getTime());
> c1.setTimeZone(TimeZone.getTimeZone("America/Montevideo"));
> Calendar truncate1 =  DateUtils.truncate(c1, Calendar.MONTH);
> System.out.println("America/Montevideo then truncated: " + truncate1.getTime());
> GregorianCalendar c2 = new GregorianCalendar(2012,10,6);
> c2.setTimeZone(TimeZone.getTimeZone("GMT"));
> Calendar truncate2 = DateUtils.truncate(c2, Calendar.MONTH);
> System.out.println("GMT then truncated: " + truncate2.getTime());
> 		
> System.out.println("Truncated compare: " + DateUtils.truncatedCompareTo(c1, c2, Calendar.MONTH));
> {quote}
> The output:
> {quote}
> The time: Tue Nov 06 00:00:00 UYST 2012
> America/Montevideo then truncated: Thu Nov 01 00:00:00 UYST 2012
> GMT then truncated: Wed Oct 31 22:00:00 UYST 2012
> Truncated compare: 1
> {quote}
> A suggestion is to change the TimeZone of both calendars before truncating. For example,
setting both to TimeZone.getDefault().

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message