X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.enterprise%2Fsrc%2Forg%2Fargeo%2Fnaming%2FNamingUtils.java;h=5a868ddb42b885afbad49925c247407ff3907182;hb=f9efbe5228615951dd8482a4582aa24e00c10ce5;hp=7d5c7b7d3d82d8dc4a9a3926ed316f7761d39c5b;hpb=2111a76162534100967eb0e7733632e80d9ddc5f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.enterprise/src/org/argeo/naming/NamingUtils.java b/org.argeo.enterprise/src/org/argeo/naming/NamingUtils.java index 7d5c7b7d3..5a868ddb4 100644 --- a/org.argeo.enterprise/src/org/argeo/naming/NamingUtils.java +++ b/org.argeo.enterprise/src/org/argeo/naming/NamingUtils.java @@ -4,7 +4,6 @@ import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; -import java.time.DateTimeException; import java.time.Instant; import java.time.OffsetDateTime; import java.time.ZoneOffset; @@ -20,6 +19,7 @@ import java.util.List; import java.util.Map; public class NamingUtils { + /** As per https://tools.ietf.org/html/rfc4517#section-3.3.13 */ private final static DateTimeFormatter utcLdapDate = DateTimeFormatter.ofPattern("uuuuMMddHHmmssX") .withZone(ZoneOffset.UTC); @@ -32,12 +32,21 @@ public class NamingUtils { } } + /** @return null if not parseable */ + public static ZonedDateTime ldapDateToZonedDateTime(String ldapDate) { + try { + return OffsetDateTime.parse(ldapDate, utcLdapDate).toZonedDateTime(); + } catch (DateTimeParseException e) { + return null; + } + } + public static Calendar ldapDateToCalendar(String ldapDate) { OffsetDateTime instant = OffsetDateTime.parse(ldapDate, utcLdapDate); GregorianCalendar calendar = new GregorianCalendar(); - calendar.set(calendar.DAY_OF_MONTH, instant.get(ChronoField.DAY_OF_MONTH)); - calendar.set(calendar.MONTH, instant.get(ChronoField.MONTH_OF_YEAR)); - calendar.set(calendar.YEAR, instant.get(ChronoField.YEAR)); + calendar.set(Calendar.DAY_OF_MONTH, instant.get(ChronoField.DAY_OF_MONTH)); + calendar.set(Calendar.MONTH, instant.get(ChronoField.MONTH_OF_YEAR)); + calendar.set(Calendar.YEAR, instant.get(ChronoField.YEAR)); return calendar; }