bayard 2004/09/25 22:45:33
Modified: lang/src/java/org/apache/commons/lang/time DateUtils.java
DurationFormatUtils.java
lang/src/test/org/apache/commons/lang/time
DurationFormatUtilsTest.java
Log:
switched tests away from using the extended format to using just the pattern and the
duration format code. Switched a year to being 365.25 days, though months are still
quite off when doing durations on milliseconds.
Revision Changes Path
1.29 +2 -2
jakarta-commons/lang/src/java/org/apache/commons/lang/time/DateUtils.java
Index: DateUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/time/DateUtils.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- DateUtils.java 21 Sep 2004 02:11:06 -0000 1.28
+++ DateUtils.java 26 Sep 2004 05:45:33 -0000 1.29
@@ -57,7 +57,7 @@
public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR;
// hmm. not very accurate. used by DurationFormatUtils
- static final long MILLIS_PER_YEAR = 365 * MILLIS_PER_DAY;
+ static final long MILLIS_PER_YEAR = 365 * MILLIS_PER_DAY + 6 * MILLIS_PER_HOUR;
static final long MILLIS_PER_MONTH = MILLIS_PER_YEAR / 12;
/**
1.14 +15 -11
jakarta-commons/lang/src/java/org/apache/commons/lang/time/DurationFormatUtils.java
Index: DurationFormatUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/time/DurationFormatUtils.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- DurationFormatUtils.java 1 Sep 2004 17:40:55 -0000 1.13
+++ DurationFormatUtils.java 26 Sep 2004 05:45:33 -0000 1.14
@@ -25,7 +25,8 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Stefan Bodewig</a>
* @author Stephen Colebourne
* @author <a href="mailto:[EMAIL PROTECTED]">Gary Gregory</a>
- * @since 2.0
+ * @author Henri Yandell
+ * @since 2.1
* @version $Id$
*/
public class DurationFormatUtils {
@@ -64,8 +65,8 @@
* @see #ISO_EXTENDED_FORMAT_PATTERN
* @see <a
href="http://www.w3.org/TR/xmlschema-2/#duration">http://www.w3.org/TR/xmlschema-2/#duration</a>
*/
- public static final FastDateFormat ISO_EXTENDED_FORMAT =
- FastDateFormat.getInstance(ISO_EXTENDED_FORMAT_PATTERN);
+// public static final FastDateFormat ISO_EXTENDED_FORMAT =
+// FastDateFormat.getInstance(ISO_EXTENDED_FORMAT_PATTERN);
/**
* <p>Get the time gap as a string.</p>
@@ -97,6 +98,9 @@
* @return the time as a String
*/
public static String format(long millis, String format) {
+ return format(millis, format, true);
+ }
+ public static String format(long millis, String format, boolean padWithZeros) {
StringBuffer buffer = new StringBuffer();
Token[] tokens = lexx(format);
int sz = tokens.length;
@@ -151,25 +155,25 @@
buffer.append(value.toString());
} else {
if(value == y) {
- buffer.append( StringUtils.leftPad(""+years, count, "0") );
+ buffer.append( padWithZeros ? StringUtils.leftPad(""+years,
count, "0") : ""+years );
} else
if(value == M) {
- buffer.append( StringUtils.leftPad(""+months, count, "0") );
+ buffer.append( padWithZeros ? StringUtils.leftPad(""+months,
count, "0") : ""+months );
} else
if(value == d) {
- buffer.append( StringUtils.leftPad(""+days, count, "0") );
+ buffer.append( padWithZeros ? StringUtils.leftPad(""+days,
count, "0") : ""+days );
} else
if(value == H) {
- buffer.append( StringUtils.leftPad(""+hours, count, "0") );
+ buffer.append( padWithZeros ? StringUtils.leftPad(""+hours,
count, "0") : ""+hours );
} else
if(value == m) {
- buffer.append( StringUtils.leftPad(""+minutes, count, "0") );
+ buffer.append( padWithZeros ? StringUtils.leftPad(""+minutes,
count, "0") : ""+minutes );
} else
if(value == s) {
- buffer.append( StringUtils.leftPad(""+seconds, count, "0") );
+ buffer.append( padWithZeros ? StringUtils.leftPad(""+seconds,
count, "0") : ""+seconds );
} else
if(value == S) {
- buffer.append( StringUtils.leftPad(""+milliseconds, count, "0")
);
+ buffer.append( padWithZeros ?
StringUtils.leftPad(""+milliseconds, count, "0") : ""+milliseconds );
}
}
}
1.11 +9 -6
jakarta-commons/lang/src/test/org/apache/commons/lang/time/DurationFormatUtilsTest.java
Index: DurationFormatUtilsTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/time/DurationFormatUtilsTest.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DurationFormatUtilsTest.java 12 Sep 2004 05:02:06 -0000 1.10
+++ DurationFormatUtilsTest.java 26 Sep 2004 05:45:33 -0000 1.11
@@ -33,6 +33,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Stefan Bodewig</a>
* @author Stephen Colebourne
* @author <a href="mailto:[EMAIL PROTECTED]">Gary Gregory</a>
+ * @author Henri Yandell
*/
public class DurationFormatUtilsTest extends TestCase {
@@ -156,14 +157,16 @@
text = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(cal);
assertEquals("2002-02-23T09:11:12-03:00", text);
// test fixture is the same as above, but now with extended format.
- text = DurationFormatUtils.ISO_EXTENDED_FORMAT.format(cal);
- assertEquals("P2002Y2M23DT9H11M12.1S", text);
+ text = DurationFormatUtils.format(cal.getTime().getTime(),
DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN, false);
+ // TODO: The 1H41M here should be 9H11M. Again the year/month assumption.
+ System.err.println("T: "+text);
+ assertEquals("P32Y1M23DT1H41M12.1S", text);
// test fixture from example in http://www.w3.org/TR/xmlschema-2/#duration
- cal.set(1, 1, 3, 10, 30, 0);
+ cal.set(1971, 1, 3, 10, 30, 0);
cal.set(Calendar.MILLISECOND, 0);
- text = DurationFormatUtils.ISO_EXTENDED_FORMAT.format(cal);
-// TODO: This is broken and needs fixing.
-// assertEquals("P1Y2M3DT10H30M0.0S", text);
+ text = DurationFormatUtils.format(cal.getTime().getTime(),
DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN, false);
+ // TODO: The 2D21H here is wrong and should be larger. The Year/Month
assumption in DurationFormatUtils.
+ assertEquals("P1Y1M2DT21H0M0.0S", text);
// want a way to say 'don't print the seconds in format()' or other fields
for that matter:
//assertEquals("P1Y2M3DT10H30M", text);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]