Next: SRFI-19 Date, Previous: SRFI-19 Introduction, Up: SRFI-19 [Contents][Index]

A *time* object has type, seconds and nanoseconds fields
representing a point in time starting from some epoch. This is an
arbitrary point in time, not just a time of day. Although times are
represented in nanoseconds, the actual resolution may be lower.

The following variables hold the possible time types. For instance
`(current-time time-process)`

would give the current CPU process
time.

- Variable:
**time-monotonic** Monotonic time, meaning a monotonically increasing time starting from an unspecified epoch.

Note that in the current implementation

`time-monotonic`

is the same as`time-tai`

, and unfortunately is therefore affected by adjustments to the system clock. Perhaps this will change in the future.

- Variable:
**time-duration** A duration, meaning simply a difference between two times.

- Function:
**time?***obj* Return

`#t`

if`obj`is a time object, or`#f`

if not.

- Function:
**make-time***type nanoseconds seconds* Create a time object with the given

`type`,`seconds`and`nanoseconds`.

- Function:
**time-type***time* - Function:
**time-nanosecond***time* - Function:
**time-second***time* - Function:
**set-time-type!***time type* - Function:
**set-time-nanosecond!***time nsec* - Function:
**set-time-second!***time sec* Get or set the type, seconds or nanoseconds fields of a time object.

`set-time-type!`

merely changes the field, it doesn’t convert the time value. For conversions, see SRFI-19 Time/Date conversions.

- Function:
**copy-time***time* Return a new time object, which is a copy of the given

`time`.

- Function:
**current-time***[type]* Return the current time of the given

`type`. The default`type`is`time-utc`

.Note that the name

`current-time`

conflicts with the Guile core`current-time`

function (see Time) as well as the SRFI-18`current-time`

function (see SRFI-18 Time). Applications wanting to use more than one of these functions will need to refer to them by different names.

- Function:
**time-resolution***[type]* Return the resolution, in nanoseconds, of the given time

`type`. The default`type`is`time-utc`

.

- Function:
**time<=?***t1 t2* - Function:
**time<?***t1 t2* - Function:
**time=?***t1 t2* - Function:
**time>=?***t1 t2* - Function:
**time>?***t1 t2* Return

`#t`

or`#f`

according to the respective relation between time objects`t1`and`t2`.`t1`and`t2`must be the same time type.

- Function:
**time-difference***t1 t2* - Function:
**time-difference!***t1 t2* Return a time object of type

`time-duration`

representing the period between`t1`and`t2`.`t1`and`t2`must be the same time type.`time-difference`

returns a new time object,`time-difference!`

may modify`t1`to form its return.

- Function:
**add-duration***time duration* - Function:
**add-duration!***time duration* - Function:
**subtract-duration***time duration* - Function:
**subtract-duration!***time duration* Return a time object which is

`time`with the given`duration`added or subtracted.`duration`must be a time object of type`time-duration`

.`add-duration`

and`subtract-duration`

return a new time object.`add-duration!`

and`subtract-duration!`

may modify the given`time`to form their return.

Next: SRFI-19 Date, Previous: SRFI-19 Introduction, Up: SRFI-19 [Contents][Index]