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 2020/06/29 17:03:41 UTC

svn commit: r1879342 - in /pdfbox/trunk: pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java

Author: tilman
Date: Mon Jun 29 17:03:41 2020
New Revision: 1879342

URL: http://svn.apache.org/viewvc?rev=1879342&view=rev
Log:
PDFBOX-4902: fix bug with half hour timezones, thanks Juho Tikkala; add test

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java
    pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java?rev=1879342&r1=1879341&r2=1879342&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/DateConverter.java Mon Jun 29 17:03:41 2020
@@ -285,7 +285,7 @@ public final class DateConverter
      */
     static String formatTZoffset(long millis, String sep)
     {
-        SimpleDateFormat sdf = new SimpleDateFormat("Z"); // #hhmm
+        SimpleDateFormat sdf = new SimpleDateFormat("Z", Locale.ENGLISH); // #hhmm
         sdf.setTimeZone(new SimpleTimeZone(restrainTZoffset(millis),"unknown"));
         String tz = sdf.format(new Date());
         return tz.substring(0,3) + sep + tz.substring(3);
@@ -387,8 +387,7 @@ public final class DateConverter
      */
     static GregorianCalendar newGreg()
     {
-        GregorianCalendar retCal = new GregorianCalendar(Locale.ENGLISH);
-        retCal.setTimeZone(new SimpleTimeZone(0, "UTC"));
+        GregorianCalendar retCal = new GregorianCalendar(new SimpleTimeZone(0, "UTC"), Locale.ENGLISH);
         retCal.setLenient(false);
         retCal.set(Calendar.MILLISECOND, 0);
         return retCal;

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java?rev=1879342&r1=1879341&r2=1879342&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java Mon Jun 29 17:03:41 2020
@@ -319,10 +319,9 @@ public final class DateConverter
             retval.append("+");
         }
         timeZone = Math.abs(timeZone);
-        // milliseconds/1000 = seconds = seconds / 60 = minutes = minutes/60 =
-        // hours
+        // milliseconds/1000 = seconds; seconds / 60 = minutes; minutes/60 = hours
         int hours = timeZone / 1000 / 60 / 60;
-        int minutes = (timeZone - (hours * 1000 * 60 * 60)) / 1000 / 1000;
+        int minutes = (timeZone - (hours * 1000 * 60 * 60)) / 1000 / 60;
         if (hours < 10)
         {
             retval.append("0");

Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java?rev=1879342&r1=1879341&r2=1879342&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java Mon Jun 29 17:03:41 2020
@@ -79,6 +79,13 @@ public class DateConverterTest
         jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-02-02T16:37:19.192+01:00");
         convDate = DateConverter.toCalendar("2015-02-02T16:37:19.192Europe/Berlin");
         assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
+
+        // PDFBOX-4902: half-hour TZ
+        String time = "2015-02-02T16:37:19.192+05:30";
+        jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime(time);
+        assertEquals(time, DateConverter.toISO8601(jaxbCal, true));
+        convDate = DateConverter.toCalendar(time);
+        assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
     }
     
     /**