Top Description Inners Fields Constructors Methods
net.fortuna.ical4j.model

public Class CalendarDateFormat

extends Object
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Imports
java.io.Serializable, java.time.*, java.time.format.DateTimeFormatter, java.time.temporal.Temporal, .TemporalAccessor, .TemporalQuery, java.util.Arrays, .List, .Objects

Support conversion of temporal values to/from iCalendar string representations.
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

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

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
public static class
public static class
public static class

Field Summary

Modifier and TypeField and Description
public static final CalendarDateFormat
public static final CalendarDateFormat
DEFAULT_PARSE_FORMAT

A formatter capable of parsing to multiple temporal types based on the input string.

public static final CalendarDateFormat
private transient volatile DateTimeFormatter
private final TemporalQuery<? extends TemporalAccessor>[]
private final String
public static final CalendarDateFormat
public static final CalendarDateFormat

Constructor Summary

AccessConstructor and Description
public
CalendarDateFormat(String
a pattern to match against parsed value strings
pattern
,
TemporalQuery<? extends TemporalAccessor>...
a list of parsers to apply in order to determine the best parsed value
parsers
)

Construct a calendar date format instance by deriving a DateTimeFormatter from the specified pattern.

public
CalendarDateFormat(DateTimeFormatter
the formatter used to derive temporal values from parsed strings
formatter
,
TemporalQuery<? extends TemporalAccessor>... parsers)

Construct a calendar date format instances using an explicit DateTimeFormatter.

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
o
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

public String
public String
public static CalendarDateFormat

Returns:

a date format instance applicable to the given temporal values
from
(List<? extends Temporal>
a list of temporal values
list
)

Identify the most applicable date format for the specified temporal list

public static CalendarDateFormat

Returns:

a date format instance applicable to the given temporal value
from
(Temporal
a temporal value
temporal
)

Identify the most applicable date format for the specified temporal value

private DateTimeFormatter
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.

public TemporalAccessor
parse(String dateString)

public ZonedDateTime
parse(String dateString, ZoneId zoneId)

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAlltoStringwaitwaitwait

Field Detail

DATE_FORMATback to summary
public static final CalendarDateFormat DATE_FORMAT
DEFAULT_PARSE_FORMATback to summary
public static final CalendarDateFormat DEFAULT_PARSE_FORMAT

A formatter capable of parsing to multiple temporal types based on the input string.

FLOATING_DATE_TIME_FORMATback to summary
public static final CalendarDateFormat FLOATING_DATE_TIME_FORMAT
formatterback to summary
private transient volatile DateTimeFormatter formatter
parsersback to summary
private final TemporalQuery<? extends TemporalAccessor>[] parsers
patternback to summary
private final String pattern
RELAXED_DATE_TIME_FORMATback to summary
public static final CalendarDateFormat RELAXED_DATE_TIME_FORMAT
UTC_DATE_TIME_FORMATback to summary
public static final CalendarDateFormat UTC_DATE_TIME_FORMAT

Constructor Detail

CalendarDateFormatback to summary
public CalendarDateFormat(String pattern, TemporalQuery<? extends TemporalAccessor>... parsers)

Construct a calendar date format instance by deriving a DateTimeFormatter from the specified pattern.

Parameters
pattern:String

a pattern to match against parsed value strings

parsers:TemporalQuery<? extends TemporalAccessor>[]

a list of parsers to apply in order to determine the best parsed value

Annotations
@SafeVarargs
CalendarDateFormatback to summary
public CalendarDateFormat(DateTimeFormatter formatter, TemporalQuery<? extends TemporalAccessor>... parsers)

Construct a calendar date format instances using an explicit DateTimeFormatter. Note that because DateTimeFormatter is not serializable, the volatile formatter value may be lost using this constructor, in which case it will fall back to using the same pattern as the DEFAULT_PARSE_FORMAT.

Parameters
formatter:DateTimeFormatter

the formatter used to derive temporal values from parsed strings

Annotations
@SafeVarargs

Method Detail

equalsback to summary
public boolean equals(Object o)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
o:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
formatback to summary
public String format(TemporalAccessor date)
formatback to summary
public String format(TemporalAccessor date, ZoneId zoneId)
fromback to summary
public static CalendarDateFormat from(List<? extends Temporal> list)

Identify the most applicable date format for the specified temporal list

Parameters
list:List<? extends Temporal>

a list of temporal values

Returns:CalendarDateFormat

a date format instance applicable to the given temporal values

fromback to summary
public static CalendarDateFormat from(Temporal temporal)

Identify the most applicable date format for the specified temporal value

Parameters
temporal:Temporal

a temporal value

Returns:CalendarDateFormat

a date format instance applicable to the given temporal value

getFormatterback to summary
private DateTimeFormatter getFormatter()
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
parseback to summary
public TemporalAccessor parse(String dateString)
parseback to summary
public ZonedDateTime parse(String dateString, ZoneId zoneId)
net.fortuna.ical4j.model back to summary

public Class CalendarDateFormat.InstantTemporalQuery

extends Object
implements TemporalQuery<Instant>, Serializable
Class Inheritance
  • java.lang.Object
  • net.fortuna.ical4j.model.CalendarDateFormat.InstantTemporalQuery
All Implemented Interfaces
java.io.Serializable, java.time.temporal.TemporalQuery

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

public Instant
queryFrom(TemporalAccessor
the temporal object to query, not null
temporal
)

Implements java.time.temporal.TemporalQuery.queryFrom.

Queries the specified temporal object.

Inherited from java.lang.Object:
clonefinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

InstantTemporalQueryback to summary
public InstantTemporalQuery()

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
queryFromback to summary
public Instant queryFrom(TemporalAccessor temporal)

Implements java.time.temporal.TemporalQuery.queryFrom.

Doc from java.time.temporal.TemporalQuery.queryFrom.

Queries the specified temporal object.

This queries the specified temporal object to return an object using the logic encapsulated in the implementing class. Examples might be a query that checks if the date is the day before February 29th in a leap year, or calculates the number of days to your next birthday.

There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use TemporalAccessor#query(TemporalQuery):

  // these two lines are equivalent, but the second approach is recommended
  temporal = thisQuery.queryFrom(temporal);
  temporal = temporal.query(thisQuery);
It is recommended to use the second approach, query(TemporalQuery), as it is a lot clearer to read in code.
Parameters
temporal:TemporalAccessor

the temporal object to query, not null

Returns:Instant

the queried value, may return null to indicate not found

Annotations
@Override
net.fortuna.ical4j.model back to summary

public Class CalendarDateFormat.LocalDateTemporalQuery

extends Object
implements TemporalQuery<LocalDate>, Serializable
Class Inheritance
  • java.lang.Object
  • net.fortuna.ical4j.model.CalendarDateFormat.LocalDateTemporalQuery
All Implemented Interfaces
java.io.Serializable, java.time.temporal.TemporalQuery

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

public LocalDate
queryFrom(TemporalAccessor
the temporal object to query, not null
temporal
)

Implements java.time.temporal.TemporalQuery.queryFrom.

Queries the specified temporal object.

Inherited from java.lang.Object:
clonefinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

LocalDateTemporalQueryback to summary
public LocalDateTemporalQuery()

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
queryFromback to summary
public LocalDate queryFrom(TemporalAccessor temporal)

Implements java.time.temporal.TemporalQuery.queryFrom.

Doc from java.time.temporal.TemporalQuery.queryFrom.

Queries the specified temporal object.

This queries the specified temporal object to return an object using the logic encapsulated in the implementing class. Examples might be a query that checks if the date is the day before February 29th in a leap year, or calculates the number of days to your next birthday.

There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use TemporalAccessor#query(TemporalQuery):

  // these two lines are equivalent, but the second approach is recommended
  temporal = thisQuery.queryFrom(temporal);
  temporal = temporal.query(thisQuery);
It is recommended to use the second approach, query(TemporalQuery), as it is a lot clearer to read in code.
Parameters
temporal:TemporalAccessor

the temporal object to query, not null

Returns:LocalDate

the queried value, may return null to indicate not found

Annotations
@Override
net.fortuna.ical4j.model back to summary

public Class CalendarDateFormat.LocalDateTimeTemporalQuery

extends Object
implements TemporalQuery<LocalDateTime>, Serializable
Class Inheritance
  • java.lang.Object
  • net.fortuna.ical4j.model.CalendarDateFormat.LocalDateTimeTemporalQuery
All Implemented Interfaces
java.io.Serializable, java.time.temporal.TemporalQuery

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

public LocalDateTime
queryFrom(TemporalAccessor
the temporal object to query, not null
temporal
)

Implements java.time.temporal.TemporalQuery.queryFrom.

Queries the specified temporal object.

Inherited from java.lang.Object:
clonefinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

LocalDateTimeTemporalQueryback to summary
public LocalDateTimeTemporalQuery()

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
queryFromback to summary
public LocalDateTime queryFrom(TemporalAccessor temporal)

Implements java.time.temporal.TemporalQuery.queryFrom.

Doc from java.time.temporal.TemporalQuery.queryFrom.

Queries the specified temporal object.

This queries the specified temporal object to return an object using the logic encapsulated in the implementing class. Examples might be a query that checks if the date is the day before February 29th in a leap year, or calculates the number of days to your next birthday.

There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use TemporalAccessor#query(TemporalQuery):

  // these two lines are equivalent, but the second approach is recommended
  temporal = thisQuery.queryFrom(temporal);
  temporal = temporal.query(thisQuery);
It is recommended to use the second approach, query(TemporalQuery), as it is a lot clearer to read in code.
Parameters
temporal:TemporalAccessor

the temporal object to query, not null

Returns:LocalDateTime

the queried value, may return null to indicate not found

Annotations
@Override
net.fortuna.ical4j.model back to summary

public Class CalendarDateFormat.OffsetDateTimeTemporalQuery

extends Object
implements TemporalQuery<OffsetDateTime>, Serializable
Class Inheritance
  • java.lang.Object
  • net.fortuna.ical4j.model.CalendarDateFormat.OffsetDateTimeTemporalQuery
All Implemented Interfaces
java.io.Serializable, java.time.temporal.TemporalQuery

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

public OffsetDateTime
queryFrom(TemporalAccessor
the temporal object to query, not null
temporal
)

Implements java.time.temporal.TemporalQuery.queryFrom.

Queries the specified temporal object.

Inherited from java.lang.Object:
clonefinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

OffsetDateTimeTemporalQueryback to summary
public OffsetDateTimeTemporalQuery()

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
queryFromback to summary
public OffsetDateTime queryFrom(TemporalAccessor temporal)

Implements java.time.temporal.TemporalQuery.queryFrom.

Doc from java.time.temporal.TemporalQuery.queryFrom.

Queries the specified temporal object.

This queries the specified temporal object to return an object using the logic encapsulated in the implementing class. Examples might be a query that checks if the date is the day before February 29th in a leap year, or calculates the number of days to your next birthday.

There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use TemporalAccessor#query(TemporalQuery):

  // these two lines are equivalent, but the second approach is recommended
  temporal = thisQuery.queryFrom(temporal);
  temporal = temporal.query(thisQuery);
It is recommended to use the second approach, query(TemporalQuery), as it is a lot clearer to read in code.
Parameters
temporal:TemporalAccessor

the temporal object to query, not null

Returns:OffsetDateTime

the queried value, may return null to indicate not found

Annotations
@Override