Class ISO8601Converter


  • public final class ISO8601Converter
    extends java.lang.Object
    Converts between ISO 8601 Strings and Calendar with millisecond resolution.
    Since:
    16.02.2006
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private ISO8601Converter()
      Hides public constructor
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static XMPDateTime parse​(java.lang.String iso8601String)
      Converts an ISO 8601 string to an XMPDateTime.
      static XMPDateTime parse​(java.lang.String iso8601String, XMPDateTime binValue)  
      static java.lang.String render​(XMPDateTime dateTime)
      Converts a Calendar into an ISO 8601 string.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ISO8601Converter

        private ISO8601Converter()
        Hides public constructor
    • Method Detail

      • parse

        public static XMPDateTime parse​(java.lang.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​(java.lang.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 java.lang.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.