diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/DateTimeUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/DateTimeUtils.java
index b33a51435f2..4507180a4f7 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/DateTimeUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/DateTimeUtils.java
@@ -18,6 +18,8 @@
package org.apache.jena.atlas.lib;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.Calendar ;
import java.util.Date ;
import java.util.GregorianCalendar ;
@@ -25,22 +27,13 @@
import org.apache.commons.lang3.time.FastDateFormat ;
public class DateTimeUtils {
-
- // Include timezone (even xsd:dates have timezones; Calendars have timezones)
- // NB in SimpleDateFormat != FastDateFormat
- // SimpleDateFormat does not format Calendars.
- // SimpleDateFormat has "X" for ISO format tmezones (+00:00)
- // FastDateFormat uses "ZZ" for this.
- private static final FastDateFormat dateTimeFmt_display = FastDateFormat.getInstance("yyyy/MM/dd HH:mm:ss z") ;
- private static final FastDateFormat dateFmt_yyyymmdd = FastDateFormat.getInstance("yyyy-MM-ddZZ") ;
- // For milliseconds == 0
- private static final FastDateFormat dateTimeFmt_XSD_ms0 = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ssZZ") ;
- // For milliseconds != 0
- private static final FastDateFormat dateTimeFmt_XSD_ms = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSSZZ") ;
- // For milliseconds == 0
- private static final FastDateFormat timeFmt_XSD_ms0 = FastDateFormat.getInstance("HH:mm:ssZZ") ;
- // For milliseconds != 0
- private static final FastDateFormat timeFmt_XSD_ms = FastDateFormat.getInstance("HH:mm:ss.SSSZZ") ;
+ // Use xxx to get +00:00 format with DateTimeFormatter
+ private static final DateTimeFormatter dateTimeFmt_display = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss zz");
+ private static final DateTimeFormatter dateFmt_yyyymmdd = DateTimeFormatter.ofPattern("yyyy-MM-ddxxx");
+ private static final DateTimeFormatter dateTimeFmt_XSD_ms0 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+ private static final DateTimeFormatter dateTimeFmt_XSD_ms = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSxxx");
+ private static final DateTimeFormatter timeFmt_XSD_ms0 = DateTimeFormatter.ofPattern("HH:mm:ssxxx");
+ private static final DateTimeFormatter timeFmt_XSD_ms = DateTimeFormatter.ofPattern("HH:mm:ss.SSSxxx");
public static String nowAsXSDDateTimeString() {
return calendarToXSDDateTimeString(new GregorianCalendar()) ;
@@ -60,68 +53,42 @@ public static String nowAsString(String formatString) {
return df.format(new Date()) ;
}
- public static String nowAsString(FastDateFormat dateFormat) {
- return dateFormat.format(new Date()) ;
+ public static String nowAsString(DateTimeFormatter dateFormat) {
+ ZonedDateTime now = ZonedDateTime.now();
+ return dateFormat.format(now);
}
private static boolean hasZeroMilliSeconds(Calendar cal) {
return ! cal.isSet(Calendar.MILLISECOND) || cal.get(Calendar.MILLISECOND) == 0 ;
}
- // Canonical fom : if ms == 0, don't include in the string.
+ // Canonical form : if ms == 0, don't include in the string.
public static String calendarToXSDDateTimeString(Calendar cal) {
- FastDateFormat fmt = hasZeroMilliSeconds(cal)
- ? dateTimeFmt_XSD_ms0
- : dateTimeFmt_XSD_ms ;
+ DateTimeFormatter fmt = hasZeroMilliSeconds(cal)
+ ? dateTimeFmt_XSD_ms0
+ : dateTimeFmt_XSD_ms ;
return calendarToXSDString(cal, fmt) ;
}
public static String calendarToXSDDateString(Calendar cal) {
- return calendarToXSDString(cal, dateFmt_yyyymmdd) ;
+ String x = calendarToXSDString(cal, dateFmt_yyyymmdd) ;
+ if ( x.endsWith("Z") )
+ x = x.substring(0, x.length()-1)+"+00:00";
+ return x;
}
// Canonical fom : if ms == 0, don't include in the string.
public static String calendarToXSDTimeString(Calendar cal) {
- FastDateFormat fmt = hasZeroMilliSeconds(cal)
- ? timeFmt_XSD_ms0
- : timeFmt_XSD_ms ;
+ DateTimeFormatter fmt = hasZeroMilliSeconds(cal)
+ ? timeFmt_XSD_ms0
+ : timeFmt_XSD_ms ;
return calendarToXSDString(cal, fmt) ;
}
- private static String calendarToXSDString(Calendar cal, FastDateFormat fmt) {
- String lex = fmt.format(cal) ;
+ private static String calendarToXSDString(Calendar cal, DateTimeFormatter fmt) {
+ ZonedDateTime zdt = ((GregorianCalendar)cal).toZonedDateTime();
+ String lex = fmt.format(zdt) ;
// lex = lex + calcTimezone(cal) ;
return lex ;
}
-
- // Not needed because of FastDateFormat
-// private static String calcTimezone(Calendar cal) {
-// Date date = cal.getTime() ;
-// TimeZone z = cal.getTimeZone() ;
-// int tz = z.getRawOffset() ;
-//
-// if ( z.inDaylightTime(date) ) {
-// int tzDst = z.getDSTSavings() ;
-// tz = tz + tzDst ;
-// }
-//
-// String sign = "+" ;
-// if ( tz < 0 ) {
-// sign = "-" ;
-// tz = -tz ;
-// }
-//
-// int tzH = tz / (60 * 60 * 1000) ; // Integer divide towards zero.
-// int tzM = (tz - tzH * 60 * 60 * 1000) / (60 * 1000) ;
-//
-// String tzH_str = Integer.toString(tzH) ;
-// String tzM_str = Integer.toString(tzM) ;
-//
-// if ( tzH < 10 )
-// tzH_str = "0" + tzH_str ;
-// if ( tzM < 10 )
-// tzM_str = "0" + tzM_str ;
-// return sign + tzH_str + ":" + tzM_str ;
-// }
}
-
diff --git a/pom.xml b/pom.xml
index d910258f766..92ce440ead1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,20 +66,20 @@
POM for the correct dependency versions
and use that or later.
-->
- 0.12.3
+ 0.12.5
2.9.9
2.9.9.3
2.6
1.4
- 3.4
- 1.5
+ 3.9
+ 1.7
1.13
1.19
0.7
- 4.5.5
+ 4.5.10
4.4.9
@@ -933,7 +933,7 @@
org.apache.maven.shared
maven-filtering
- 1.2
+ 3.1.1