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