Class DateTime

  • All Implemented Interfaces:
    Serializable, Cloneable, Comparable<Date>

    public class DateTime
    extends Date
    A representation of the DATE-TIME object defined in RFC5445.

    Extract from RFC5545:

     3.3.5.  Date-Time
    
     Value Name:  DATE-TIME
    
     Purpose:  This value type is used to identify values that specify a
     precise calendar date and time of day.
    
     Format Definition:  This value type is defined by the following
     notation:
    
     date-time  = date "T" time ;As specified in the DATE and TIME
     ;value definitions
    
     Description:  If the property permits, multiple "DATE-TIME" values
     are specified as a COMMA-separated list of values.  No additional
     content value encoding (i.e., BACKSLASH character encoding, see
     Section 3.3.11) is defined for this value type.
    
     The "DATE-TIME" value type is used to identify values that contain
     a precise calendar date and time of day.  The format is based on
     the [ISO.8601.2004] complete representation, basic format for a
     calendar date and time of day.  The text format is a concatenation
     of the "date", followed by the LATIN CAPITAL LETTER T character,
     the time designator, followed by the "time" format.
    
     The "DATE-TIME" value type expresses time values in three forms:
    
     The form of date and time with UTC offset MUST NOT be used.  For
     example, the following is not valid for a DATE-TIME value:
    
     19980119T230000-0800       ;Invalid time format
    
     FORM #1: DATE WITH LOCAL TIME
    
     The date with local time form is simply a DATE-TIME value that
     does not contain the UTC designator nor does it reference a time
     zone.  For example, the following represents January 18, 1998, at
     11 PM:
    
     19980118T230000
    
     DATE-TIME values of this type are said to be "floating" and are
     not bound to any time zone in particular.  They are used to
     represent the same hour, minute, and second value regardless of
     which time zone is currently being observed.  For example, an
     event can be defined that indicates that an individual will be
     busy from 11:00 AM to 1:00 PM every day, no matter which time zone
     the person is in.  In these cases, a local time can be specified.
     The recipient of an iCalendar object with a property value
     consisting of a local time, without any relative time zone
     information, SHOULD interpret the value as being fixed to whatever
     time zone the "ATTENDEE" is in at any given moment.  This means
     that two "Attendees", in different time zones, receiving the same
     event definition as a floating time, may be participating in the
     event at different actual times.  Floating time SHOULD only be
     used where that is the reasonable behavior.
    
     In most cases, a fixed time is desired.  To properly communicate a
     fixed time in a property value, either UTC time or local time with
     time zone reference MUST be specified.
    
     The use of local time in a DATE-TIME value without the "TZID"
     property parameter is to be interpreted as floating time,
     regardless of the existence of "VTIMEZONE" calendar components in
     the iCalendar object.
    
     FORM #2: DATE WITH UTC TIME
    
     The date with UTC time, or absolute time, is identified by a LATIN
     CAPITAL LETTER Z suffix character, the UTC designator, appended to
     the time value.  For example, the following represents January 19,
     1998, at 0700 UTC:
    
     19980119T070000Z
    
     The "TZID" property parameter MUST NOT be applied to DATE-TIME
     properties whose time values are specified in UTC.
    
     FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE
    
     The date and local time with reference to time zone information is
     identified by the use the "TZID" property parameter to reference
     the appropriate time zone definition.  "TZID" is discussed in
     detail in Section 3.2.19.  For example, the following represents
     2:00 A.M. in New York on January 19, 1998:
    
     TZID=America/New_York:19980119T020000
    
     If, based on the definition of the referenced time zone, the local
     time described occurs more than once (when changing from daylight
     to standard time), the DATE-TIME value refers to the first
     occurrence of the referenced time.  Thus, TZID=America/
     New_York:20071104T013000 indicates November 4, 2007 at 1:30 A.M.
     EDT (UTC-04:00).  If the local time described does not occur (when
     changing from standard to daylight time), the DATE-TIME value is
     interpreted using the UTC offset before the gap in local times.
     Thus, TZID=America/New_York:20070311T023000 indicates March 11,
     2007 at 3:30 A.M. EDT (UTC-04:00), one hour after 1:30 A.M. EST
     (UTC-05:00).
    
     A time value MUST only specify the second 60 when specifying a
     positive leap second.  For example:
    
     19970630T235960Z
    
     Implementations that do not support leap seconds SHOULD interpret
     the second 60 as equivalent to the second 59.
    
     Example:  The following represents July 14, 1997, at 1:30 PM in New
     York City in each of the three time formats, using the "DTSTART"
     property.
    
     DTSTART:19970714T133000                   ; Local time
     DTSTART:19970714T173000Z                  ; UTC time
     DTSTART;TZID=America/New_York:19970714T133000
     ; Local time and time
     ; zone reference
     
    See Also:
    Serialized Form
    • Constructor Detail

      • DateTime

        public DateTime()
        Default constructor.
      • DateTime

        public DateTime​(boolean utc)
        Parameters:
        utc - indicates if the date is in UTC time
      • DateTime

        public DateTime​(long time)
        Parameters:
        time - a date-time value in milliseconds
      • DateTime

        public DateTime​(Date date)
        Parameters:
        date - a date-time value
      • DateTime

        public DateTime​(Date date,
                        TimeZone timeZone)
      • DateTime

        public DateTime​(String value)
                 throws ParseException
        Constructs a new DateTime instance from parsing the specified string representation in the default (local) timezone.
        Parameters:
        value - a string representation of a date-time
        Throws:
        ParseException - where the specified string is not a valid date-time
      • DateTime

        public DateTime​(String value,
                        TimeZone timezone)
                 throws ParseException
        Creates a new date-time instance from the specified value in the given timezone. If a timezone is not specified, the default timezone (as returned by TimeZones.getDefault()) is used.
        Parameters:
        value - a string representation of a date-time
        timezone - the timezone for the date-time instance
        Throws:
        ParseException - where the specified string is not a valid date-time
      • DateTime

        public DateTime​(String value,
                        String pattern,
                        TimeZone timezone)
                 throws ParseException
        Parameters:
        value - a string representation of a date-time
        pattern - a pattern to apply when parsing the date-time value
        timezone - the timezone for the date-time instance
        Throws:
        ParseException - where the specified string is not a valid date-time
      • DateTime

        public DateTime​(String value,
                        String pattern,
                        boolean utc)
                 throws ParseException
        Parameters:
        value - a string representation of a date-time
        pattern - a pattern to apply when parsing the date-time value
        utc - indicates whether the date-time is in UTC time
        Throws:
        ParseException - where the specified string is not a valid date-time
    • Method Detail

      • setTime

        public final void setTime​(long time)
        Overrides:
        setTime in class Iso8601
      • isUtc

        public final boolean isUtc()
        Returns:
        Returns the utc.
      • setUtc

        public final void setUtc​(boolean utc)
        Updates this date-time to display in UTC time if the argument is true. Otherwise, resets to the default timezone.
        Parameters:
        utc - The utc to set.
      • setTimeZone

        public final void setTimeZone​(TimeZone timezone)
        Sets the timezone associated with this date-time instance. If the specified timezone is null, it will reset to the default timezone. If the date-time instance is utc, it will turn into either a floating (no timezone) date-time, or a date-time with a timezone.
        Parameters:
        timezone - a timezone to apply to the instance
      • getTimeZone

        public final TimeZone getTimeZone()
        Returns the current timezone associated with this date-time value.
        Returns:
        a Java timezone
      • equals

        public boolean equals​(Object arg0)
        Overrides:
        equals in class Date
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Date