package com.reucon.openfire.plugin.archive.util; import org.jivesoftware.util.XMPPDateTimeFormat; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; /** * Utility class to parse and format dates in UTC that adhere to the DateTime format specified in Jabber Date and Time Profiles. */ public class XmppDateUtil { private static final DateFormat dateFormat; private static final DateFormat dateFormatWithoutMillis; static { dateFormat = new SimpleDateFormat(XMPPDateTimeFormat.XMPP_DATETIME_FORMAT); dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); dateFormatWithoutMillis = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); dateFormatWithoutMillis.setTimeZone(TimeZone.getTimeZone("UTC")); } private XmppDateUtil() { } public static Date parseDate(String dateString) { Date date = null; if (dateString == null) { return null; } synchronized (dateFormat) { try { date = dateFormat.parse(dateString); } catch (ParseException e) { // ignore } } if (date != null) { return date; } synchronized (dateFormatWithoutMillis) { try { date = dateFormatWithoutMillis.parse(dateString); } catch (ParseException e) { // ignore } } return date; } public static String formatDate(Date date) { if (date == null) { return null; } synchronized (dateFormat) { return dateFormat.format(date); } } }