You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2009/12/17 07:04:29 UTC

svn commit: r891542 - in /commons/proper/lang/trunk/src: java/org/apache/commons/lang3/time/FastDateFormat.java test/org/apache/commons/lang3/time/FastDateFormatTest.java

Author: bayard
Date: Thu Dec 17 06:04:28 2009
New Revision: 891542

URL: http://svn.apache.org/viewvc?rev=891542&view=rev
Log:
Fixing LANG-538 - you need to call getTime() on a calendar sometimes to get it in the right state, otherwise the timezone gets out of whack. 

Modified:
    commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java
    commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java

Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java?rev=891542&r1=891541&r2=891542&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java Thu Dec 17 06:04:28 2009
@@ -869,6 +869,7 @@
      */
     public StringBuffer format(Calendar calendar, StringBuffer buf) {
         if (mTimeZoneForced) {
+            calendar.getTime(); /// LANG-538
             calendar = (Calendar) calendar.clone();
             calendar.setTimeZone(mTimeZone);
         }

Modified: commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java?rev=891542&r1=891541&r2=891542&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java (original)
+++ commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java Thu Dec 17 06:04:28 2009
@@ -333,4 +333,17 @@
         format = (FastDateFormat) SerializationUtils.deserialize( SerializationUtils.serialize( format ) );
         assertEquals(output, format.format(cal));
     }
+
+    public void testLang538() {
+        final String dateTime = "2009-10-16T16:42:16.000Z";
+
+        // more commonly constructed with: cal = new GregorianCalendar(2009, 9, 16, 8, 42, 16)
+        // for the unit test to work in any time zone, constructing with GMT-8 rather than default locale time zone
+        GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT-8"));
+        cal.clear();
+        cal.set(2009, 9, 16, 8, 42, 16);
+
+        FastDateFormat format = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", TimeZone.getTimeZone("GMT"));
+        assertEquals("dateTime", dateTime, format.format(cal));
+    }
 }



Re: svn commit: r891542 - in /commons/proper/lang/trunk/src: java/org/apache/commons/lang3/time/FastDateFormat.java test/org/apache/commons/lang3/time/FastDateFormatTest.java

Posted by Henri Yandell <fl...@gmail.com>.
Switched to getTimeInMillis() :)

On Thu, Dec 17, 2009 at 10:11 AM, sebb <se...@gmail.com> wrote:
> On 17/12/2009, bayard@apache.org <ba...@apache.org> wrote:
>> Author: bayard
>>  Date: Thu Dec 17 06:04:28 2009
>>  New Revision: 891542
>>
>>  URL: http://svn.apache.org/viewvc?rev=891542&view=rev
>>  Log:
>>  Fixing LANG-538 - you need to call getTime() on a calendar sometimes to get it in the right state, otherwise the timezone gets out of whack.
>>
>>  Modified:
>>     commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java
>>     commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java
>>
>>  Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java
>>  URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java?rev=891542&r1=891541&r2=891542&view=diff
>>  ==============================================================================
>>  --- commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java (original)
>>  +++ commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java Thu Dec 17 06:04:28 2009
>>  @@ -869,6 +869,7 @@
>>       */
>>      public StringBuffer format(Calendar calendar, StringBuffer buf) {
>>          if (mTimeZoneForced) {
>>  +            calendar.getTime(); /// LANG-538
>
> Seems wasteful to create a new Date; surely a better fix is:
>
>                 calendar.getTimeInMillis();
>
> Works for me on Win/XP-Java 1.5.0_22
>
>>              calendar = (Calendar) calendar.clone();
>>              calendar.setTimeZone(mTimeZone);
>>          }
>>
>>  Modified: commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java
>>  URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java?rev=891542&r1=891541&r2=891542&view=diff
>>  ==============================================================================
>>  --- commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java (original)
>>  +++ commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java Thu Dec 17 06:04:28 2009
>>  @@ -333,4 +333,17 @@
>>          format = (FastDateFormat) SerializationUtils.deserialize( SerializationUtils.serialize( format ) );
>>          assertEquals(output, format.format(cal));
>>      }
>>  +
>>  +    public void testLang538() {
>>  +        final String dateTime = "2009-10-16T16:42:16.000Z";
>>  +
>>  +        // more commonly constructed with: cal = new GregorianCalendar(2009, 9, 16, 8, 42, 16)
>>  +        // for the unit test to work in any time zone, constructing with GMT-8 rather than default locale time zone
>>  +        GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT-8"));
>>  +        cal.clear();
>>  +        cal.set(2009, 9, 16, 8, 42, 16);
>>  +
>>  +        FastDateFormat format = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", TimeZone.getTimeZone("GMT"));
>>  +        assertEquals("dateTime", dateTime, format.format(cal));
>>  +    }
>>   }
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r891542 - in /commons/proper/lang/trunk/src: java/org/apache/commons/lang3/time/FastDateFormat.java test/org/apache/commons/lang3/time/FastDateFormatTest.java

Posted by sebb <se...@gmail.com>.
On 17/12/2009, bayard@apache.org <ba...@apache.org> wrote:
> Author: bayard
>  Date: Thu Dec 17 06:04:28 2009
>  New Revision: 891542
>
>  URL: http://svn.apache.org/viewvc?rev=891542&view=rev
>  Log:
>  Fixing LANG-538 - you need to call getTime() on a calendar sometimes to get it in the right state, otherwise the timezone gets out of whack.
>
>  Modified:
>     commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java
>     commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java
>
>  Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java
>  URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java?rev=891542&r1=891541&r2=891542&view=diff
>  ==============================================================================
>  --- commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java (original)
>  +++ commons/proper/lang/trunk/src/java/org/apache/commons/lang3/time/FastDateFormat.java Thu Dec 17 06:04:28 2009
>  @@ -869,6 +869,7 @@
>       */
>      public StringBuffer format(Calendar calendar, StringBuffer buf) {
>          if (mTimeZoneForced) {
>  +            calendar.getTime(); /// LANG-538

Seems wasteful to create a new Date; surely a better fix is:

                 calendar.getTimeInMillis();

Works for me on Win/XP-Java 1.5.0_22

>              calendar = (Calendar) calendar.clone();
>              calendar.setTimeZone(mTimeZone);
>          }
>
>  Modified: commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java
>  URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java?rev=891542&r1=891541&r2=891542&view=diff
>  ==============================================================================
>  --- commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java (original)
>  +++ commons/proper/lang/trunk/src/test/org/apache/commons/lang3/time/FastDateFormatTest.java Thu Dec 17 06:04:28 2009
>  @@ -333,4 +333,17 @@
>          format = (FastDateFormat) SerializationUtils.deserialize( SerializationUtils.serialize( format ) );
>          assertEquals(output, format.format(cal));
>      }
>  +
>  +    public void testLang538() {
>  +        final String dateTime = "2009-10-16T16:42:16.000Z";
>  +
>  +        // more commonly constructed with: cal = new GregorianCalendar(2009, 9, 16, 8, 42, 16)
>  +        // for the unit test to work in any time zone, constructing with GMT-8 rather than default locale time zone
>  +        GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT-8"));
>  +        cal.clear();
>  +        cal.set(2009, 9, 16, 8, 42, 16);
>  +
>  +        FastDateFormat format = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", TimeZone.getTimeZone("GMT"));
>  +        assertEquals("dateTime", dateTime, format.format(cal));
>  +    }
>   }
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org