24
24
import static org .junit .jupiter .api .Assertions .assertEquals ;
25
25
26
26
import java .text .SimpleDateFormat ;
27
+ import java .time .ZonedDateTime ;
28
+ import java .time .format .DateTimeFormatter ;
27
29
import java .util .Calendar ;
28
30
29
31
import org .junit .jupiter .api .Test ;
@@ -46,9 +48,6 @@ class DateConverterTest
46
48
@ Test
47
49
void testDateConversion () throws Exception
48
50
{
49
- final SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss.SSSZ" );
50
- Calendar jaxbCal ;
51
-
52
51
// Test partial dates
53
52
Calendar convDate = DateConverter .toCalendar ("2015-02-02" );
54
53
assertEquals (2015 , convDate .get (Calendar .YEAR ));
@@ -60,44 +59,54 @@ void testDateConversion() throws Exception
60
59
DateConverter .toCalendar ("2011-11-20T10:09Z" ));
61
60
62
61
// Test some time zone offsets
63
- jaxbCal = javax .xml .bind .DatatypeConverter .parseDateTime ("2015-02-02T16:37:19.192Z" );
64
- convDate = DateConverter .toCalendar ("2015-02-02T16:37:19.192Z" );
65
- assertEquals (dateFormat .format (jaxbCal .getTime ()), dateFormat .format (convDate .getTime ()));
62
+ String testString1 = "" ;
63
+ String testString2 = "" ;
64
+
65
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter .ofPattern ("yyyy-MM-dd'T'HH:mm[:ss][.SSS][XXX]" );
66
+
67
+ //Test missing seconds
68
+ testString1 = "2015-12-08T12:07:00-05:00" ;
69
+ testString2 = "2015-12-08T12:07-05:00" ;
70
+
71
+ assertEquals (DateConverter .toCalendar (testString1 ), DateConverter .toCalendar (testString2 ));
72
+ assertEquals (DateConverter .toCalendar (testString1 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
73
+ assertEquals (DateConverter .toCalendar (testString2 ).toInstant (),ZonedDateTime .parse (testString2 , dateTimeFormatter ).toInstant ());
74
+
75
+ // Test some time zone offsets
76
+ testString1 = "2015-02-02T16:37:19.192Z" ;
77
+ testString2 = "2015-02-02T16:37:19.192Z" ;
66
78
67
- jaxbCal = javax .xml .bind .DatatypeConverter .parseDateTime ("2015-02-02T16:37:19.192+00:00" );
68
- convDate = DateConverter .toCalendar ("2015-02-02T16:37:19.192Z" );
69
- assertEquals (dateFormat .format (jaxbCal .getTime ()), dateFormat .format (convDate .getTime ()));
79
+ assertEquals (DateConverter .toCalendar (testString2 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
70
80
71
- jaxbCal = javax .xml .bind .DatatypeConverter .parseDateTime ("2015-02-02T16:37:19.192+02:00" );
72
- convDate = DateConverter .toCalendar ("2015-02-02T16:37:19.192+02:00" );
73
- assertEquals (dateFormat .format (jaxbCal .getTime ()), dateFormat .format (convDate .getTime ()));
81
+ testString1 = "2015-02-02T16:37:19.192+00:00" ;
82
+ testString2 = "2015-02-02T16:37:19.192Z" ;
74
83
75
- jaxbCal = javax .xml .bind .DatatypeConverter .parseDateTime ("2015-02-02T16:37:19.192Z" );
76
- convDate = DateConverter .toCalendar ("2015-02-02T08:37:19.192PST" );
77
- assertEquals (dateFormat .format (jaxbCal .getTime ()), dateFormat .format (convDate .getTime ()));
84
+ assertEquals (DateConverter .toCalendar (testString2 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
78
85
79
- jaxbCal = javax .xml .bind .DatatypeConverter .parseDateTime ("2015-02-02T16:37:19.192+01:00" );
80
- convDate = DateConverter .toCalendar ("2015-02-02T16:37:19.192Europe/Berlin" );
81
- assertEquals (dateFormat .format (jaxbCal .getTime ()), dateFormat .format (convDate .getTime ()));
86
+ testString1 = "2015-02-02T16:37:19.192+02:00" ;
87
+ testString2 = "2015-02-02T16:37:19.192+02:00" ;
88
+
89
+ assertEquals (DateConverter .toCalendar (testString2 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
90
+
91
+ testString1 = "2015-02-02T16:37:19.192Z" ;
92
+ testString2 = "2015-02-02T08:37:19.192PST" ;
93
+
94
+ assertEquals (DateConverter .toCalendar (testString2 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
95
+
96
+ testString1 = "2015-02-02T16:37:19.192+01:00" ;
97
+ testString2 = "2015-02-02T16:37:19.192Europe/Berlin" ;
98
+
99
+ assertEquals (DateConverter .toCalendar (testString2 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
82
100
83
101
// PDFBOX-4902: half-hour TZ
84
- String time = "2015-02-02T16:37:19.192+05:30" ;
85
- jaxbCal = javax .xml .bind .DatatypeConverter .parseDateTime (time );
86
- assertEquals (time , DateConverter .toISO8601 (jaxbCal , true ));
87
- convDate = DateConverter .toCalendar (time );
88
- assertEquals (dateFormat .format (jaxbCal .getTime ()), dateFormat .format (convDate .getTime ()));
89
-
90
- time = "2015-02-02T16:37:19.192-05:30" ;
91
- jaxbCal = javax .xml .bind .DatatypeConverter .parseDateTime (time );
92
- assertEquals (time , DateConverter .toISO8601 (jaxbCal , true ));
93
- convDate = DateConverter .toCalendar (time );
94
- assertEquals (dateFormat .format (jaxbCal .getTime ()), dateFormat .format (convDate .getTime ()));
95
-
96
- time = "2015-02-02T16:37:19.192+10:30" ;
97
- jaxbCal = javax .xml .bind .DatatypeConverter .parseDateTime (time );
98
- assertEquals (time , DateConverter .toISO8601 (jaxbCal , true ));
99
- convDate = DateConverter .toCalendar (time );
100
- assertEquals (dateFormat .format (jaxbCal .getTime ()), dateFormat .format (convDate .getTime ()));
102
+ testString1 = "2015-02-02T16:37:19.192+05:30" ;
103
+ assertEquals (DateConverter .toCalendar (testString1 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
104
+
105
+ testString1 = "2015-02-02T16:37:19.192-05:30" ;
106
+ assertEquals (DateConverter .toCalendar (testString1 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
107
+
108
+ testString1 = "2015-02-02T16:37:19.192+10:30" ;
109
+ assertEquals (DateConverter .toCalendar (testString1 ).toInstant (),ZonedDateTime .parse (testString1 , dateTimeFormatter ).toInstant ());
101
110
}
102
111
103
112
/**
0 commit comments