42.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 finite number stands for the number of seconds since the epoch.

Function: time-less-p t1 t2

This returns t if the time value t1 is less than the time value t2.

Function: time-equal-p t1 t2

This returns t if the two time values t1 and t2 are equal. The result is nil if either argument is a NaN. For the purpose of comparison, a nil argument represents the current time with infinite resolution, so this function returns nil if one argument is nil and the other is not, and callers can therefore use nil to represent an unknown time value that does not equal any timestamp.

Function: time-subtract t1 t2

This returns the time difference t1t2 between two time values, as a Lisp timestamp. The result is exact and its clock resolution is no worse than the worse of its two arguments’ resolutions. 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: days-to-time days

This is not quite the inverse of the time-to-days function, as it uses the Emacs epoch (instead of the year 1) for historical reasons. To get the inverse, subtract (time-to-days 0) from days, in which case days-to-time may return nil if days is negative.

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.