Class Date

All Implemented Interfaces:
Serializable, Cloneable, Comparable<Date>
Direct Known Subclasses:
DateTime

public class Date extends Iso8601
A representation of the DATE object defined in RFC5445.

NOTE: iCal4j calculates the timezone of Date objects by default. In the iCalendar specification a DATE object doesn't really have a timezone associated with it, but in the ical4j implementation it does (as it is based on a java.util.Date object). An unfortunate side effect of this is that a Date object can be affected by daylight savings rules for the associated timezone. So currently ical4j offers two approaches to setting the timezone:

  1. Use UTC time (no DST rules, but depending on how the Date is constructed it may change the displayed value
  2. Use local timezone (in rare cases the DST rules may affect the displayed value).

By default option 1 is used, but you can override this with the following flag in the ical4j.properties file: net.fortuna.ical4j.timezone.date.floating=true

Alternatively you can avoid using the constructor that accepts a java.util.Date object, and instead provide a date string value. This should always display the correct value, however when the local timezone is used any calculations (recurrences, etc.) may still be affect by DST rules.

Extract from RFC5545:

 3.3.4.  Date
 
 Value Name:  DATE
 
 Purpose:  This value type is used to identify values that contain a
 calendar date.
 
 Format Definition:  This value type is defined by the following
 notation:
 
 date               = date-value
 
 date-value         = date-fullyear date-month date-mday
 date-fullyear      = 4DIGIT
 date-month         = 2DIGIT        ;01-12
 date-mday          = 2DIGIT        ;01-28, 01-29, 01-30, 01-31
 ;based on month/year
 
 Description:  If the property permits, multiple "date" values are
 specified as a COMMA-separated list of values.  The format for the
 value type is based on the [ISO.8601.2004] complete
 representation, basic format for a calendar date.  The textual
 format specifies a four-digit year, two-digit month, and two-digit
 day of the month.  There are no separator characters between the
 year, month, and day component text.
 
 No additional content value encoding (i.e., BACKSLASH character
 encoding, see Section 3.3.11) is defined for this value type.
 
 Example:  The following represents July 14, 1997:
 
 19970714
 
 
See Also:
  • Constructor Details

    • Date

      public Date()
      Default constructor.
    • Date

      protected Date(int precision, TimeZone tz)
      Creates a new date instance with the specified precision. This constructor is only intended for use by sub-classes.
      Parameters:
      precision - the date precision
      tz - the timezone
      See Also:
    • Date

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

      protected Date(long time, int precision, TimeZone tz)
      Creates a new date instance with the specified precision. This constructor is only intended for use by sub-classes.
      Parameters:
      time - a date value in milliseconds
      precision - the date precision
      tz - the timezone
      See Also:
    • Date

      public Date(Calendar calendar)
      Parameters:
      calendar - a calendar value
    • Date

      public Date(Date date)
      Parameters:
      date - a date value
    • Date

      public Date(String value) throws ParseException
      Parameters:
      value - a string representation of a date
      Throws:
      ParseException - where the specified string is not a valid date
    • Date

      public Date(String value, String pattern) throws ParseException
      Parameters:
      value - a string representation of a date
      pattern - a date pattern to apply when parsing
      Throws:
      ParseException - where the specified string is not a valid date