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()));
}
/**