Class ISO8601Converter


  • public final class ISO8601Converter
    extends Object
    Converts between ISO 8601 Strings and Calendar with millisecond resolution.
    Since:
    16.02.2006
    • Method Detail

      • parse

        public static XMPDateTime parse​(String iso8601String)
                                 throws XMPException
        Converts an ISO 8601 string to an XMPDateTime. Parse a date according to ISO 8601 and http://www.w3.org/TR/NOTE-datetime:
        • YYYY
        • YYYY-MM
        • YYYY-MM-DD
        • YYYY-MM-DDThh:mmTZD
        • YYYY-MM-DDThh:mm:ssTZD
        • YYYY-MM-DDThh:mm:ss.sTZD
        Data fields:
        • YYYY = four-digit year
        • MM = two-digit month (01=January, etc.)
        • DD = two-digit day of month (01 through 31)
        • hh = two digits of hour (00 through 23)
        • mm = two digits of minute (00 through 59)
        • ss = two digits of second (00 through 59)
        • s = one or more digits representing a decimal fraction of a second
        • TZD = time zone designator (Z or +hh:mm or -hh:mm)
        Note that ISO 8601 does not seem to allow years less than 1000 or greater than 9999. We allow any year, even negative ones. The year is formatted as "%.4d".

        Note: Tolerate missing TZD, assume is UTC. Photoshop 8 writes dates like this for exif:GPSTimeStamp.
        Note: DOES NOT APPLY ANYMORE. Tolerate missing date portion, in case someone foolishly writes a time-only value that way.

        Parameters:
        iso8601String - a date string that is ISO 8601 conform.
        Returns:
        Returns a Calendar.
        Throws:
        XMPException - Is thrown when the string is non-conform.
      • parse

        public static XMPDateTime parse​(String iso8601String,
                                        XMPDateTime binValue)
                                 throws XMPException
        Parameters:
        iso8601String - a date string that is ISO 8601 conform.
        binValue - an existing XMPDateTime to set with the parsed date
        Returns:
        Returns an XMPDateTime-object containing the ISO8601-date.
        Throws:
        XMPException - Is thrown when the string is non-conform.
      • render

        public static String render​(XMPDateTime dateTime)
        Converts a Calendar into an ISO 8601 string. Format a date according to ISO 8601 and http://www.w3.org/TR/NOTE-datetime:
        • YYYY
        • YYYY-MM
        • YYYY-MM-DD
        • YYYY-MM-DDThh:mmTZD
        • YYYY-MM-DDThh:mm:ssTZD
        • YYYY-MM-DDThh:mm:ss.sTZD
        Data fields:
        • YYYY = four-digit year
        • MM = two-digit month (01=January, etc.)
        • DD = two-digit day of month (01 through 31)
        • hh = two digits of hour (00 through 23)
        • mm = two digits of minute (00 through 59)
        • ss = two digits of second (00 through 59)
        • s = one or more digits representing a decimal fraction of a second
        • TZD = time zone designator (Z or +hh:mm or -hh:mm)

        Note: ISO 8601 does not seem to allow years less than 1000 or greater than 9999. We allow any year, even negative ones. The year is formatted as "%.4d".

        Note: Fix for bug 1269463 (silently fix out of range values) included in parsing. The quasi-bogus "time only" values from Photoshop CS are not supported.

        Parameters:
        dateTime - an XMPDateTime-object.
        Returns:
        Returns an ISO 8601 string.