The date Module

The date module is part of the System library and provides a machine-independent facility for representing and manipulating dates and date/time intervals.

Representing dates and times

The date module contains a single class, <date>, an instance of which can represent any date between 1 Jan 1800 00:00:00 and 31 Dec 2199 23:59:59, Greenwich Mean Time. You can create a date object by calling the function encode-date or using the make method for <date>.

Each of the arguments to encode-date and to the make method on <date> is an instance of <integer> (except for the iso8601-string keyword for the make method, which is a string) that is passed as an init-keyword value to the <date> object. Each init-keyword takes an instance of <integer>, limited to the natural range for that attribute. For example, month: can only take values between 1 and 12.

You must specify values, via encode-date, for at least the year:, month:, and day: init-keywords. In addition, you can also specify values for hours:, minutes:, seconds:, microseconds:, and time-zone-offset:. If not supplied, the default value for each of these init-keywords is 0.

The time-zone-offset: init-keyword is used to represent time zones in the date module as <integer> values representing the offset in minutes from Greenwich Mean Time (GMT). Positive values are used for time zones East of Greenwich; negative values represent time zones to the west of Greenwich.

For example, the value -300 (-5 hours) is U.S. Eastern Standard Time and the value -240 (-4 hours) is U.S. Eastern Daylight Savings Time.

If you wish, a <date> can be specified completely by using the iso8601-string: init-keyword. This init-keyword takes an instance of <string>, which should be a valid ISO8601 format date. If you use the iso8601-string: init-keyword, there is no need to specify any other init-keywords to a call to make on <date>.

Representing durations

Date/time intervals, called durations, are modeled in a style quite similar to that of SQL. There are two, effectively disjoint, classes of duration: one with a resolution of months (for example, 3 years, 2 months) and the other with a resolution of microseconds (for example, 50 days, 6 hours, 23 minutes). The first is <year/month-duration> and the second <day/time-duration>.

An important distinction between <day/time-duration> and <year/month-duration> is that a given instance of <day/time-duration> is always a fixed unit of a fixed length, whereas a <year/month-duration> follows the vagaries of the calendar. So if you have a <date> that represents, for example, the 5th of some month, adding a <year/month-duration> of 1 month to that will always take you to the 5th of the following month, whether that is an interval of 28, 29, 30, or 31 days.

Performing operations on dates and durations

A number of interfaces are exported from the date module that let you perform other operations on dates and durations, and extract date-specific information from your local machine.

Comparing dates

The following operations are exported from the date module.

These methods let you perform arithmetic-like operations on dates to test for equality, or to test whether one date occurred before another.

Comparing durations

The following operations are exported from the date module.

As with dates, you can perform arithmetic-like operations on durations to test for equality, or to test whether one duration is shorter than another.

Performing arithmetic operations

You can add, subtract, multiply, and divide dates and durations in a number of ways to produce a variety of date or duration information. Methods are defined for any combination of date and duration, with any operation that makes sense, and the return value is of the appropriate type.

For example, a method is defined that subtracts one date from another, and returns a duration, but there is no method for adding two dates together, since dates cannot be summed in any sensible way. However, there are methods for adding dates and durations which return dates.

Note that some addition and subtraction operations involving dates and instances of <year/month-duration> can cause errors where the result is a date that does not exist in the calendar. For example, adding one month to January 30th.

The table below summarizes the methods defined for each arithmetic operation, for different combinations of date and duration arguments, together with their return values.

Methods defined for arithmetic operations on dates and durations

Op

Argument 1

Argument 2

Return value

+

<duration>

<duration>

<duration>

+

<year/month-duration>

<year/month-duration>

<year/month-duration>

+

<day/time-duration>

<day/time-duration>

<day/time-duration>

+

<date>

<duration>

<date>

+

<duration>

<date>

<date>

-

<duration>

<duration>

<duration>

-

<year/month-duration>

<year/month-duration>

<year/month-duration>

-

<day/time-duration>

<day/time-duration>

<day/time-duration>

-

<date>

<duration>

<date>

-

<date>

<date>

<day/time-duration>

*

<duration>

<real>

<duration>

*

<real>

<duration>

<duration>

/

<duration>

<real>

<duration>

Dealing with time-zones

The following functions return information about the time-zone that the host machine is in.

Extracting information from dates

A number of functions are available to return discrete pieces of information from a specified <date> object. These are useful to allow you to deconstruct a given date in order to retrieve useful information from it.

The most basic way to extract information from a date is to use the function decode-date.

  • decode-date

    Decodes a <date> into its constituent parts. This function is the companion of encode-date, in that it takes a <date> object and returns all of its constituent parts. Note, however, that in contrast to encode-date, it does not return any millisecond component to the date, but it does return the day of the week of the specified date.

A number of other functions exist to extract individual components from a <date> object. Each of these functions is listed below. Each function takes a single argument, a <date> object, and returns the component of the date referred to in the function name. For example, date-month takes a <date> object as an argument, and returns the month that the date refers to.

For each function except date-day-of-week, the value returned is an instance of <integer>. The date-day-of-week function returns an object of type <day-of-week>. For more information, please refer to the reference entries of each function. Also see the function date-time-zone-offset-setter, which allows you to set the time-zone offset of a <date> explicitly.

Formatting Dates

To return an ISO 8601 format date from a <date> object, use the function as-iso8601-string.

Dates can also be returned in RFC-822 and RFC-1123 formats with the as-rfc822-string and as-rfc1123-string functions.

More flexible date formatting is available with format-date.

Parsing Dates

Dates can be parsed with parse-date-string. ISO-8601 formatted date strings can be parsed with parse-iso8601-string.

The date module

This section contains a reference entry for each item exported from the Date module.

=(<date>) Sealed Method

Compares two dates for equality.

Signature

date1 = date2 => equal?

Parameters
  • date1 – An instance of <date>.

  • date2 – An instance of <date>.

Values
Discussion

This method lets you compare two dates to see if they are equal. Any differences in microseconds between date1 and date2 are ignored.

See also

=(<duration>) Sealed Method

Compares two durations for equality.

Signature

duration1 = duration2 => equal?

Parameters
Values
Discussion

This method lets you compare two durations to see if they are equal. If the durations are actually instances of <day/time-duration>, any differences in microseconds between duration1 and duration2 are ignored.

See also

<(<date>) Sealed Method

Determines whether one date is earlier than another.

Signature

date1 < date2 => before?

Parameters
  • date1 – An instance of <date>.

  • date2 – An instance of <date>.

Values
Discussion

This method determines if date1 is earlier than date2. Any differences in microseconds between date1 and date2 are ignored.

See also

<(<duration>) Sealed Method

Determines whether one duration is less than another.

Signature

duration1 < duration2 => less-than?

Parameters
Values
Discussion

This method determines if duration1 is less than duration2. If the durations are actually instances of <day/time-duration>, any differences in microseconds between duration1 and duration2 are ignored.

See also

+(<date>) Sealed Method

Performs addition on specific combinations of dates and durations.

Signature

  • arg1 arg2 => sum

Parameters
Values
  • sum – An instance of <date>.

Discussion

A number of methods are defined for the + generic function to allow summing of various combinations of dates and durations. Note that there is not a method defined for every possible combination of date and duration. Specifically, you cannot sum two dates. The table below lists the methods that are defined on + and <date>.

Methods defined for addition of dates and durations

arg1

arg2

sum

<date>

<duration>

<date>

<duration>

<date>

<date>

See also

+(<duration>) Sealed Method

Performs addition on durations.

Signature

  • arg1 arg2 => sum

Parameters
Values
Discussion

A number of methods are defined for the + generic function to allow summing of durations. Note that there is not a method defined for every possible combination of duration. Specifically, you cannot sum different types of duration. The table below lists the methods that are defined on +.

Methods defined for addition of durations

arg1

arg2

sum

<duration>

<duration>

<duration>

<year/month-duration>

<year/month-duration>

<year/month-duration>

<day/time-duration>

<day/time-duration>

<day/time-duration>

See also

-(<date>) Sealed Method

Performs subtraction on specific combinations of dates and durations.

Signature

  • arg1 arg2 => diff

Parameters
  • arg1 – An instance of <date> or <duration>. See description for details.

  • arg2 – An instance of <duration>, or an instance of <date> if arg1 is a <date>. See description for details.

Values
Discussion

A number of methods are defined for the - generic function to allow subtraction of various combinations of dates and durations. Note that there is not a method defined for every possible combination of date and duration. Specifically, you cannot subtract a date from a duration, and you cannot subtract different types of duration. The return value can be either a date or a duration, depending on the arguments supplied. The table below lists the methods that are defined on -.

Methods defined for subtraction of dates and durations

arg1

arg2

difference

<date>

<duration>

<date>

<date>

<date>

<day/time-duration>

See also

-(<duration>) Sealed Method

Performs subtraction on specific combinations of durations.

Signature

  • arg1 arg2 => diff

Parameters
  • arg1 – An instance of <date> or <duration>. See description for details.

  • arg2 – An instance of <duration>, or an instance of <date> if arg1 is a <date>. See description for details.

Values
Discussion

A number of methods are defined for the - generic function to allow subtraction of durations. Note that there is not a method defined for every possible combination of duration. Specifically, you cannot subtract different types of duration. The table below lists the methods that are defined on -.

Methods defined for subtraction of dates and durations

arg1

arg2

difference

<year/month-duration>

<year/month-duration>

<year/month-duration>

<day/time-duration>

<day/time-duration>

<day/time-duration>

See also

*(<duration>) Sealed Method

Multiplies a duration by a scale factor.

Signature

* duration scale => new-duration

Signature

* scale duration => new-duration

Parameters
Values
Discussion

Note: These arguments can be expressed in any order.

Multiples a duration by a scale factor and returns the result. Note that the arguments can be expressed in any order: methods are defined such that the duration can be placed first or second in the list of arguments.

See also

/(<duration>) Sealed Method

Divides a duration by a scale factor

Signature

/ duration scale => new-duration

Parameters
Values
Discussion

See also

as-iso8601-string Function

Returns a string representation of a date, conforming to the ISO 8601 standard.

Signature

as-iso8601-string date #key precision => iso8601-string

Parameters
  • date – An instance of <date>.

  • precision (#key) – An instance of <integer>. Default value: 0.

Values
  • iso8601-string – An instance of <string>.

Discussion

Returns a string representation of date using the format identified by International Standard ISO 8601 (for example, "19960418T210634Z"). If precision is non-zero, the specified number of digits of a fraction of a second are included in the string (for example, "19960418T210634.0034Z").

The returned string always expresses the time in Greenwich Mean Time. The iso8601-string init-keyword for <date>, however, accepts ISO 8601 strings with other time zone specifications.

This is the same as calling:

format-date("%Y-%m-%dT%H:%M:%S%:z", date);

See also

as-rfc822-string Function

Returns a string representation of a date, conforming to RFC 822.

Signature

as-rfc822-string date => rfc822-string

Parameters
  • date – An instance of <date>.

Values
  • rfc822-string – An instance of <string>.

Discussion

An example in this format is:

Sun, 01 Sep 13 17:00:00 GMT

This is the same as calling:

format-date("%a, %d %b %y %H:%M:%S %z", date);

See also

as-rfc1123-string Function

Returns a string representation of a date, conforming to RFC 1123.

Signature

as-rfc1123-string date => rfc1123-string

Parameters
  • date – An instance of <date>.

Values
  • rfc1123-string – An instance of <string>.

Discussion

The date format for RFC-1123 is the same as for RFC-822 except that the year must be 4 digits rather than 2:

Sun, 01 Sep 2013 17:00:00 GMT

This is the same as calling:

format-date("%a, %d %b %Y %H:%M:%S %z", date);

This format is commonly used in email, HTTP headers, RSS feeds and other protocols where date representations are used.

See also

current-date Function

Returns a date object representing the current date and time.

Signature

current-date () => date

Values
  • date – An instance of <date>.

Discussion

Returns date for the current date and time.

<date> Sealed Class

The class of objects representing dates.

Superclasses

<number>

Init-Keywords
  • iso8601-string – An instance of false-or(<string>). Default value: #f.

  • year – An instance of limited(<integer>, min: 1800, max: 2199).

  • month – An instance of limited(<integer>, min: 1, max: 12).

  • day – An instance of limited(<integer>, min: 1, max: 31).

  • hours – An instance of limited(<integer>, min: 0, max: 23). Default value: 0.

  • minutes – An instance of limited(<integer>, min: 0, max: 59). Default value: 0.

  • seconds – An instance of limited(<integer>, min: 0, max: 59). Default value: 0.

  • microseconds – An instance of limited(<integer>, min: 0, max: 999999). Default value: 0.

  • time-zone-offset – An instance of <integer>. Default value: 0.

Discussion

Represents a date and time between 1 Jan 1800 00:00:00 and 31 Dec 2199 23:59:59, Greenwich Mean Time (GMT).

A <date> can be specified to microsecond precision and includes a time zone indication.

If supplied, the iso8601-string: init-keyword completely specifies the value of the <date>. Otherwise, the year:, month:, and day: init-keywords must be supplied. Note that, although you can supply ISO 8601 strings that represent any time zone specification, the related function as-iso8601-string always returns an ISO 8601 string representing a time in Greenwich Mean Time.

For the time-zone-offset init-keyword, a positive number represents an offset ahead of GMT, in minutes, and a negative number represents an offset behind GMT. The value returned is an instance of <integer> (for example, -300 represents the offset for EST, which is 5 hours behind GMT).

Operations

See also

date-day Function

Returns the day of the month component of a specified date.

Signature

date-day date => day

Parameters
  • date – An instance of <date>.

Values
Discussion

Returns the day of the month component of the specified date. For example, if passed a <date> that represented 16:36 on the 20th June, 1997, date-day returns the value 20.

See also

date-day-of-week Function

Returns the day of the week of a specified date.

Signature

date-day-of-week date => day-of-week

Parameters
  • date – An instance of <date>.

Values
  • day-of-week – An object of type <day-of-week>.

Discussion

Returns the day of the week of the specified date.

See also

date-hours Function

Returns the hour component of a specified date.

Signature

date-hours date => hour

Parameters
  • date – An instance of <date>.

Values
Discussion

Returns the hour component of the specified date. This component is always expressed in 24 hour format.

See also

date-microseconds Function

Returns the microseconds component of a specified date.

Signature

date-microseconds date => microseconds

Parameters
  • date – An instance of <date>.

Values
Discussion

Returns the microseconds component of the specified date. Note that this does not return the entire date object, represented as a number of microseconds; it returns any value assigned to the microseconds: init-keyword when the <date> object was created.

See also

date-minutes Function

Returns the minutes component of a specified date.

Signature

date-minutes date => minutes

Parameters
  • date – An instance of <date>.

Values
Discussion

Returns the minutes component of the specified date.

See also

date-month Function

Returns the month of a specified date.

Signature

date-month date => month

Parameters
  • date – An instance of <date>.

Values
Discussion

Returns the month of the specified date.

See also

date-seconds Function

Returns the seconds component of a specified date.

Signature

date-seconds date => seconds

Parameters
  • date – An instance of <date>.

Values
Discussion

Returns the seconds component of the specified date. Note that this does not return the entire date object, represented as a number of seconds; it returns any value assigned to the seconds: init-keyword when the <date> object was created.

See also

date-time-zone-offset Function

Returns the time zone offset of a specified date.

Signature

date-time-zone-offset date => time-zone-offset

Parameters
  • date – An instance of <date>.

Values
  • time-zone-offset – An instance of <integer>.

Discussion

Returns the time zone offset of the specified date. The values of the other components of date reflect this time zone.

A positive number represents an offset ahead of GMT, in minutes, and a negative number represents an offset behind GMT. The value returned is an instance of <integer> (for example, -300 represents the offset for EST, which is 5 hours behind GMT).

See also

date-time-zone-offset-setter Function

Change the time zone offset of a specified date, while maintaining the same point in time.

Signature

date-time-zone-offset-setter new-time-zone-offset date => new-time-zone-offset

Parameters
  • new-time-zone-offset – An instance of <integer>.

  • date – An instance of <date>.

Values
  • new-time-zone-offset – An instance of <integer>.

Discussion

Changes the time zone offset of date without changing the actual point in time identified by the date. The values of the other components of date are adjusted to reflect the new time zone.

The new-time-zone-offset argument should represent the offset from GMT, in minutes. Thus, if you wish to specify a new offset representing EST, which is 5 hours behind GMT, new-time-zone-offset should have the value -300.

See also

date-year Function

Returns the year of a specified date.

Signature

date-year date => year

Parameters
  • date – An instance of <date>.

Values
Discussion

Returns the year of the specified date.

See also

:: todo Make this a type.

<day-of-week> Class

The days of the week.

Discussion

The days of the week. This is the type of the return value of the date-day-of-week function.

one-of(#"Sunday", #"Monday", #"Tuesday", #"Wednesday", #"Thursday", #"Friday", #"Saturday")

Operations

See also

<day/time-duration> Sealed Class

The class of objects representing durations in units of microseconds.

Superclasses

<duration>

Init-Keywords
  • days – An instance of <integer>.

  • hours – An instance of <integer>. Default value: 0.

  • minutes – An instance of <integer>. Default value: 0.

  • seconds – An instance of <integer>. Default value: 0.

  • microseconds – An instance of <integer>. Default value: 0.

Discussion

The class of objects representing durations in units of microseconds. It is a subclass of <duration>.

Use this class to represent a number of days and fractions thereof. If you need to represent durations in calendar units of months or years, use <year/month-duration> instead.

Operations

See also

decode-date Function

Returns the date and time stored in a date object.

Signature

decode-date date => year month day hours minutes seconds day-of-week time-zone-offset

Parameters
  • date – An instance of <date>.

Values
Discussion

Returns the date and time stored in date.

Note that it does not return the millisecond component of a <date>, but it does return the appropriate <day-of-week>.

See also

decode-duration Sealed Generic function

Decodes a duration into its constituent parts.

Signature

decode-duration duration => #rest components

Parameters
Values
  • #rest components – Instances of <integer>.

Discussion

Decodes an instance of <duration> into its constituent parts. There are methods for this generic function that specialize on <year/month-duration> and <day/time-duration> respectively, as described below.

See also

decode-duration(<day/time-duration>) Sealed Method

Decodes a day/time duration into its constituent parts.

Signature

decode-duration duration => days hours minutes seconds microseconds

Parameters
Values
Discussion

Decodes an instance of <day/time-duration> into its constituent parts.

See also

decode-duration(<year/month-duration>) Sealed Method

Decodes a year/month duration into its constituent parts.

Signature

decode-duration duration => years months

Parameters
Values
Discussion

Decodes an instance of <year/month-duration> into its constituent parts.

See also

<duration> Abstract Instantiable Sealed Class

The class of objects representing durations.

Superclasses

<number>

Init-Keywords
  • iso8601-string – An instance of false-or(<string>). Default value: #f.

  • year – An instance of limited(<integer>, min: 1800, max: 2199).

  • month – An instance of limited(<integer>, min: 1, max: 12).

  • day – An instance of limited(<integer>, min: 1, max: 31).

  • hours – An instance of limited(<integer>, min: 0, max: 23). Default value: 0.

  • minutes – An instance of limited(<integer>, min: 0, max: 59). Default value: 0.

  • seconds – An instance of limited(<integer>, min: 0, max: 59). Default value: 0.

  • microseconds – An instance of limited(<integer>, min: 0, max: 999999). Default value: 0.

  • time-zone-offset – An instance of <integer>. Default value: 0.

Discussion

This class is the used to represent durations. It is a subclass of <number>, and it has two subclasses.

Operations

See also

encode-date Function

Creates a date object for the specified date and time.

Signature

encode-date year month day hours minutes seconds #key*microseconds time-zone-offset* => date

Parameters
  • year – An instance of <integer>.

  • month – An instance of <integer>.

  • day – An instance of <integer>.

  • hours – An instance of <integer>.

  • minutes – An instance of <integer>.

  • seconds – An instance of <integer>.

  • microseconds (#key) – An instance of <integer>. Default value: 0.

  • #keytime-zone-offset – An instance of <integer>. Default value: local-time-zone-offset().

Values
  • date – An instance of <date>.

Discussion

Creates a <date> object for the specified date and time.

See also

encode-day/time-duration Function

Creates a day/time duration from a set of integer values.

Signature

encode-day/time-duration days hours minutes seconds microseconds => duration

Parameters
Values
Discussion

Creates an instance of <day/time-duration>.

See also

encode-year/month-duration Function

Creates a year/month duration from a set of integer values.

Signature

encode-year/month-duration years months => duration

Parameters
Values
Discussion

Creates an instance of <year/month-duration>.

See also

format-date Function

Formats a date according to a format string.

Signature

format-date format date => formatted-date

Parameters
Values
Discussion

format-date interprets a control string, format, to create a string representing the date.

The control string can contain these directives:

  • %Y - The year.

  • %y - The year, in 2 digit form.

  • %H - Hours, zero padded.

  • %k - Hours, space padded.

  • %M - Minutes, zero padded.

  • %S - Seconds, zero padded.

  • %f - Microseconds, 6 digits.

  • %F - Milliseconds, 3 digits.

  • %T - Time, each component zero padded.

  • %m - Month in numeric form, zero padded.

  • %d - Day of the month, zero padded.

  • %e - Day of the month, space padded.

  • %A - Name of the day of the week.

  • %a - Short name of the day of the week.

  • %B - Name of the month.

  • %b - Short name of the month.

  • %z - Time zone offset.

  • %:z - Time zone offset, but using : between hours and minutes.

  • %n - A new line.

  • %% - A % character.

See also

local-daylight-savings-time? Function

Checks whether the local machine is using Daylight Savings Time.

Signature

local-daylight-savings-time? () => dst?

Values
Discussion

Returns #t if the local machine is using Daylight Savings Time, and #f otherwise.

local-time-zone-name Function

Returns the time zone name in use by the local machine.

Signature

local-time-zone-name () => time-zone-name

Values
  • time-zone-name – An instance of <string>.

Discussion

Returns the time zone name in use by the local machine, if available, or a string of the form +/-HHMM if the time zone name is unknown.

local-time-zone-offset Function

Returns the offset of the time-zone from Greenwich Mean Time, expressed as a number of minutes.

Signature

local-time-zone-offset () => time-zone-offset

Values
  • time-zone-offset – An instance of <integer>.

Discussion

Returns the offset of the time-zone from Greenwich Mean Time, expressed as a number of minutes. A positive number represents an offset ahead of GMT, and a negative number represents an offset behind GMT. The return value is an instance of <integer> (for example, -300 represents the offset for EST, which is 5 hours behind GMT). The return value incorporates daylight savings time when necessary.

make(<date>) Method

Creates an instance of the <date> class.

Signature

make date-class #key iso8601-string year month day hours minutes seconds microseconds time-zone-offset => date-instance

Parameters
  • date-class – The class <date>.

  • iso8601-string (#key) – An instance of false-or(<string>). Default value: #f.

  • year (#key) – An instance of limited(<integer>, min: 1800, max: 2199).

  • month (#key) – An instance of limited(<integer>, min: 1, max: 12).

  • day (#key) – An instance of limited(<integer>, min: 1, max: 31).

  • hours (#key) – An instance of limited(<integer>, min: 0, max: 23). Default value: 0.

  • minutes (#key) – An instance of limited(<integer>, min: 0, max: 59). Default value: 0.

  • seconds (#key) – An instance of limited(<integer>, min: 0, max: 59). Default value: 0.

  • microseconds (#key) – An instance of limited(<integer>, min: 0, max: 999999). Default value: 0.

  • time-zone-offset (#key) – An instance of <integer>. Default value: 0.

Values
  • date-instance – An instance of <date>.

Discussion

Creates an instance of <date>.

The make method on <date> takes the same keywords as the <date> class.

Note: The iso8601-string keyword accepts a richer subset of the ISO 8601 specification than is produced by the as-iso8601-string function. See parse-iso8601-string for details.

Example
make (<date>, iso8601-string: "19970717T1148-0400")
See also

parse-date-string Function

Parse a date in string form according to a control string, returning a date.

Signature

parse-date-string date format => date

Parameters
Values
  • date – An instance of <date>.

Discussion

Parses a date in string form according to a control string, format. The control string uses the same directives as format-date.

See also

parse-iso8601-string Function

Parse a variety of variants on ISO-8601 formatted date strings.

Signature

parse-iso8601-string string #key strict? => date

Parameters
  • string – An instance of <string>.

  • strict? (#key) – An instance of <boolean>, default #t.

Values
  • date – An instance of <date>.

Discussion

This function parses the ISO 8601 formats listed below, with the following differences if strict? = #f:

  • the ‘-‘ in YYYY-MM-DD is optional

  • the ‘:’ in hh:mm:ss is optional

  • the ‘:’ in the timezone is optional

  • the date and time may be separated by a space character

  • TZD may be preceded by a space character

See http://www.w3.org/TR/NOTE-datetime.html.

Year:

YYYY (eg 1997)

Year and month:

YYYY-MM (eg 1997-07)

Complete date:

YYYY-MM-DD (eg 1997-07-16)

Complete date plus hours and minutes:

YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)

Complete date plus hours, minutes and seconds:

YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)

Complete date plus hours, minutes, seconds and a decimal fraction of a second

YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)

where:
  • 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) (am/pm NOT allowed)

  • 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)

See also

<year/month-duration> Sealed Class

The class of objects representing durations with a coarse resolution.

Superclasses

<duration>

Init-Keywords
Discussion

The class of objects representing durations in units of calendar years and months. It is a subclass of <duration>.

Use this class to represent a number of calendar years and months. If you need to represent durations in units of days or fractions thereof (to microsecond resolution), use <day/time-duration> instead.

Operations

See also