You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2016/08/09 15:30:02 UTC

svn commit: r1755623 - in /pdfbox/branches/2.0/pdfbox/src: main/java/org/apache/pdfbox/util/DateConverter.java test/java/org/apache/pdfbox/util/TestDateUtil.java

Author: tilman
Date: Tue Aug  9 15:30:01 2016
New Revision: 1755623

URL: http://svn.apache.org/viewvc?rev=1755623&view=rev
Log:
PDFBOX-3315: prevent corner case 12:00 to be interpreted as 00:00, fixed + added tests

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java
    pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java?rev=1755623&r1=1755622&r2=1755623&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java Tue Aug  9 15:30:01 2016
@@ -197,12 +197,16 @@ public final class DateConverter
     }
     
     /*
-     * Constrain a timezone offset to the range  [-11:59 thru +11:59].
+     * Constrain a timezone offset to the range  [-11:59 thru +12:00].
      * by adding or subtracting multiples of a full day.
      */
     private static int restrainTZoffset(long proposedOffset)
     {
         proposedOffset = ((proposedOffset + HALF_DAY) % DAY + DAY) % DAY;
+        if (proposedOffset == 0)
+        {
+            return HALF_DAY;
+        }
         // 0 <= proposedOffset < DAY
         proposedOffset = (proposedOffset - HALF_DAY) % HALF_DAY;
         // -HALF_DAY < proposedOffset < HALF_DAY

Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java?rev=1755623&r1=1755622&r2=1755623&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java Tue Aug  9 15:30:01 2016
@@ -295,6 +295,8 @@ public class TestDateUtil extends TestCa
             // ambiguous big-endian date
             checkParse(2073,12,25, 0, 8, 0, 0, 0, "2073 12 25:08"); 
             
+            // PDFBOX-3315 GMT+12
+            checkParse(2016, 4,11,16,01,15, 12, 0, "D:20160411160115+12'00'");   
     }
 
     private static void checkToString(int yr, int mon, int day, 
@@ -370,6 +372,7 @@ public class TestDateUtil extends TestCa
      */
     public void testParseTZ() 
     {
+        // 1st parameter is what to expect
         checkParseTZ(0*HRS+0*MINS, "+00:00");
         checkParseTZ(0*HRS+0*MINS, "-0000");
         checkParseTZ(1*HRS+0*MINS, "+1:00");
@@ -391,6 +394,9 @@ public class TestDateUtil extends TestCa
         checkParseTZ((5*HRS+0*MINS), "+0500");
         checkParseTZ((11*HRS+0*MINS), "+11'00'");
         checkParseTZ(0, "Z");
+        // PDFBOX-3315
+        checkParseTZ(12*HRS+0*MINS, "+12:00");
+        checkParseTZ(12*HRS+0*MINS, "-12:00");
     }
     
     private static void checkFormatOffset(double off, String expect) 
@@ -405,6 +411,7 @@ public class TestDateUtil extends TestCa
      */
     public void testFormatTZoffset()
     {
+        // 2nd parameter is what to expect
         checkFormatOffset(-12.1, "+11:54");
         checkFormatOffset(12.1, "-11:54");
         checkFormatOffset(0, "+00:00");
@@ -413,8 +420,8 @@ public class TestDateUtil extends TestCa
         checkFormatOffset(-0.5, "-00:30");
         checkFormatOffset(.1, "+00:06");
         checkFormatOffset(-0.1, "-00:06");
-        checkFormatOffset(-12, "+00:00");
-        checkFormatOffset(12, "+00:00");
+        checkFormatOffset(-12, "+12:00");
+        checkFormatOffset(12, "+12:00");
         checkFormatOffset(-11.5, "-11:30");
         checkFormatOffset(11.5, "+11:30");
         checkFormatOffset(11.9, "+11:54");