commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benedikt Ritter (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LANG-951) Fragments are wrong by 1 day when using fragment YEAR or MONTH
Date Mon, 20 Jan 2014 17:24:19 GMT

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

Benedikt Ritter commented on LANG-951:
--------------------------------------

Hello Sebastian,

you're right. There was a bug hiding that even found his way into the test case :) Thanks
for spotting this. If committed your test in [rev. 1559780|http://svn.apache.org/r1559780],
please review. If you intend to contribute more often in the future (which I would appreciate
;-) ) please be sure to only use spaces to indent your code, since displaying of the tab character
depends on the editor you use (I've corrected that in your patch). Also, please file an [ICLA|http://www.apache.org/licenses],
it makes things easier for us.

Thanks!
Benedikt

> Fragments are wrong by 1 day when using fragment YEAR or MONTH
> --------------------------------------------------------------
>
>                 Key: LANG-951
>                 URL: https://issues.apache.org/jira/browse/LANG-951
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.time.*
>    Affects Versions: 3.1
>            Reporter: Sebastian Götz
>             Fix For: 3.3
>
>         Attachments: LANG-951.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> When one trys to get the fragments of a calendar object and uses the fragment YEAR or
MONTH, the returned value is wrong by 1 day in the targeted timeunit. The bug resides in the
class *DateUtils* in function 
> {code}
> private static long getFragment(Calendar calendar, int fragment, int unit)
> {code}
> There is an initial recalculation if the fragment is YEAR or MONTH. So if one would like
to have the minutes for the fragment YEAR for the date 2000-01-01 00:00:00 this would return
1440 which is actually wrong. The error can be found on lines 1635 - 1643.
> Suggested fix:
> {code}
> // Fragments bigger than a day require a breakdown to days
>         switch (fragment) {
>             case Calendar.YEAR:
>                 result += ((calendar.get(Calendar.DAY_OF_YEAR)-1) * MILLIS_PER_DAY) /
millisPerUnit;
>                 break;
>             case Calendar.MONTH:
>                 result += ((calendar.get(Calendar.DAY_OF_MONTH)-1) * MILLIS_PER_DAY)
/ millisPerUnit;
>                 break;
>         }
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Mime
View raw message