# 40.10 Time Calculations

These functions perform calendrical computations using time values (see Time of Day). As with any time value, a value of `nil`

for any of their time-value arguments stands for the current system time, and a single number stands for the number of seconds since the epoch.

`function`

**time-less-p** *t1 t2*β

This returns `t`

if time value `t1`

is less than time value `t2`

. The result is `nil`

if either argument is a NaN.

`function`

**time-equal-p** *t1 t2*β

This returns `t`

if `t1`

and `t2`

are equal time values. The result is `nil`

if either argument is a NaN.

`function`

**time-subtract** *t1 t2*β

This returns the time difference `t1`

- `t2`

between two time values, as a Lisp time value. The result is exact and its clock resolution is no worse than the worse of its two argumentsβ resolutions. The result is floating-point only if it is infinite or a NaN. If you need the difference in units of elapsed seconds, you can convert it with `time-convert`

or `float-time`

. See Time Conversion.

`function`

**time-add** *t1 t2*β

This returns the sum of two time values, using the same conversion rules as `time-subtract`

. One argument should represent a time difference rather than a point in time, as a time value that is often just a single number of elapsed seconds. Here is how to add a number of seconds to a time value:

`(time-add time seconds)`

`function`

**time-to-days** *time-value*β

This function returns the number of days between the beginning of year 1 and `time-value`

, assuming the default time zone. The operating system limits the range of time and zone values.

`function`

**time-to-day-in-year** *time-value*β

This returns the day number within the year corresponding to `time-value`

, assuming the default time zone. The operating system limits the range of time and zone values.

`function`

**date-leap-year-p** *year*β

This function returns `t`

if `year`

is a leap year.

`function`

**date-days-in-month** *year month*β

Return the number of days in `month`

in `year`

. For instance, February 2020 has 29 days.

`function`

**date-ordinal-to-time** *year ordinal*β

Return the date of `ordinal`

in `year`

as a decoded time structure. For instance, the 120th day in 2004 is April 29th.