You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ba...@apache.org on 2006/12/08 10:05:56 UTC
svn commit: r483891 -
/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/DurationFormatUtils.java
Author: bayard
Date: Fri Dec 8 01:05:52 2006
New Revision: 483891
URL: http://svn.apache.org/viewvc?view=rev&rev=483891
Log:
Added javadoc to explain the quandry in how to count month/day differences
Modified:
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/DurationFormatUtils.java
Modified: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/DurationFormatUtils.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/DurationFormatUtils.java?view=diff&rev=483891&r1=483890&r2=483891
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/DurationFormatUtils.java (original)
+++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/time/DurationFormatUtils.java Fri Dec 8 01:05:52 2006
@@ -249,7 +249,18 @@
/**
* <p>Formats the time gap as a string, using the specified format.
* Padding the left hand side of numbers with zeroes is optional and
- * the timezone may be specified.
+ * the timezone may be specified. </p>
+ *
+ * <p>When calculating the difference between months/days, it chooses to
+ * calculate months first. So when working out the number of months and
+ * days between January 15th and March 10th, it choose 1 month and
+ * 23 days gained by choosing January->February = 1 month and then
+ * calculating days forwards, and not the 1 month and 26 days gained by
+ * choosing March -> February = 1 month and then calculating days
+ * backwards. </p>
+ *
+ * <p>For more control, the Joda Time library is recommended
+ * (<a href="http://joda-time.sf.net/"). </p>
*
* @param startMillis the start of the duration
* @param endMillis the end of the duration
@@ -304,11 +315,10 @@
while (days < 0) {
end.add(Calendar.MONTH, -1);
days += end.getActualMaximum(Calendar.DAY_OF_MONTH);
-//days += 31; // TODO: Need tests to show this is bad and the new code is good.
-// HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
-// 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
-// Also it's contextual - if asked for no M in the format then I should probably
-// be doing no calculating here.
+ // HEN: It's a tricky subject. Jan 15th to March 10th. If I count days-first it is
+ // 1 month and 26 days, but if I count month-first then it is 1 month and 23 days.
+ // Also it's contextual - if asked for no M in the format then I should probably
+ // be doing no calculating here.
months -= 1;
end.add(Calendar.MONTH, 1);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org