[jbpm-issues] [JBoss JIRA] Resolved: (JBPM-1146) Leap Year Date Calculations (v3.1.4)

Thomas Diesler (JIRA) jira-events at lists.jboss.org
Tue Apr 1 03:56:41 EDT 2008


     [ http://jira.jboss.com/jira/browse/JBPM-1146?page=all ]

Thomas Diesler resolved JBPM-1146.
----------------------------------

    Resolution: Done
      Assignee: Alejandro Guizar  (was: JBN Patch Team)

Fix JBWS-1707

> Leap Year Date Calculations (v3.1.4)
> ------------------------------------
>
>                 Key: JBPM-1146
>                 URL: http://jira.jboss.com/jira/browse/JBPM-1146
>             Project: JBoss jBPM
>          Issue Type: Support Patch
>          Components: Core Engine
>    Affects Versions: jBPM 3.1.4
>            Reporter: Alejandro Guizar
>         Assigned To: Alejandro Guizar
>         Attachments: jbpm-3.1.4.jar
>
>
> Based on JBPM-1098 there is concern over date calculations in in jBPM 3.1 and 3.2. There might be issues around the end of Feb. The problem is characterized as follows. Under the current model, durations that are not expressed in months or years work correctly. Consider the following expression.
> endDate = new Date(startDate.getTime() + interval);
> If startDate is February 28, 2008 and interval is 1 day, then endDate will be February 29, 2008. Every day has the same duration even on leap years. The presentation layer is responsible of converting the milliseconds in a Date to a suitable representation in the calendar system. The Java APIs are all aware of leap years, so this is covered as well.
> The situation is different for months and years. If the interval above was 1 year, then endDate would be February 27, 2009. Because of the extra day in 2008, the expected endDate has shifted backwards one day. To fix this, the Duration class has to preserve the original unit of time instead of converting to milliseconds up front. Calculation of endDate can then be delegated to java.util.Calendar as follows.
> startCalendar = Calendar.getInstance();
> startCalendar.setTime(startDate);
> startCalendar.add(unit, interval);
> endDate = startCalendar.getTime();

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jbpm-issues mailing list