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:29:56 UTC
svn commit: r1755622 - in /pdfbox/branches/1.8/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:29:55 2016
New Revision: 1755622
URL: http://svn.apache.org/viewvc?rev=1755622&view=rev
Log:
PDFBOX-3315: prevent corner case 12:00 to be interpreted as 00:00, fixed + added tests
Modified:
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java
pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java?rev=1755622&r1=1755621&r2=1755622&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java Tue Aug 9 15:29:55 2016
@@ -227,7 +227,7 @@ public 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].
* @param proposedOffset A value intended to be a timezone offset.
* @return The corresponding value reduced to the above noted range
* by adding or subtracting multiples of a full day.
@@ -235,6 +235,10 @@ public class DateConverter
public 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/1.8/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java?rev=1755622&r1=1755621&r2=1755622&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/util/TestDateUtil.java Tue Aug 9 15:29:55 2016
@@ -328,6 +328,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,
@@ -403,6 +405,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");
@@ -426,6 +429,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)
@@ -440,6 +446,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");
@@ -448,8 +455,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");