package org.basex.util; import java.text.*; import java.util.*; /** * This class contains static, thread-safe methods for parsing and formatting dates and times. * * @author BaseX Team 2005-17, BSD License * @author Christian Gruen */ public final class DateTime { /** Date format without milliseconds and timestamp (uses UTC time zone). */ public static final SimpleDateFormat DATETIME = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); /** Full date format. */ public static final SimpleDateFormat FULL = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); /** Date format. */ public static final SimpleDateFormat DATE = new SimpleDateFormat("yyyy-MM-dd"); /** Time format. */ public static final SimpleDateFormat TIME = new SimpleDateFormat("HH:mm:ss.SSS"); /** Time zone. */ public static final SimpleDateFormat ZONE = new SimpleDateFormat("Z"); static { FULL.setTimeZone(TimeZone.getTimeZone("UTC")); } /** Hidden constructor. */ private DateTime() { } /** * Parses a string and produces a date object. * Returns the standard base time if it cannot be converted. * @param date string representing a date * @return parsed date */ public static synchronized Date parse(final String date) { try { return (date.contains(":") ? FULL : DATETIME).parse(date); } catch(final ParseException ex) { Util.errln(ex); return new Date(0); } } /** * Creates a full string representation for the specified date. * @param date date * @return string with the formatted date */ public static synchronized String format(final Date date) { return format(date, FULL); } /** * Creates a string representation for a date in the specified format. * @param format date format * @param date date * @return string with the formatted date */ public static synchronized String format(final Date date, final DateFormat format) { return format.format(date); } }