In addition to using the lubridate package, some additional functions to work with times are provided.

This function takes a numeric with a "unit" attribute and converts it to another numeric with a different time attribute. If the units passed to argument units are the same as attr(time, "unit"), then it simply returns input time.

inSeconds(unit, envir, skipChecks = FALSE)

convertTimeunit(time, unit, envir, skipChecks = FALSE)

checkTimeunit(unit, envir)

# S4 method for character,missing
checkTimeunit(unit, envir)

# S4 method for character,environment
checkTimeunit(unit, envir)

## Arguments

unit Character. One of the time units used in SpaDES or user defined time unit, given as the unit name only. See details. An environment. This is where to look up the function definition for the time unit. See details. For speed, the internal checks for classes and missingness can be skipped. Default FALSE. Numeric. With a unit attribute, indicating the time unit of the input numeric. See Details.

## Format

An object of class character of length 12.

## Value

A numeric vector of length 1, with unit attribute set to "seconds".

## Details

Current pre-defined units are found within the spadesTimes() function. The user can define a new unit. The unit name can be anything, but the function definition must be of the form "dunitName", e.g., dyear or dfortnight. The unit name is the part without the d and the function name definition includes the d. This new function, e.g., dfortnight <- function(x) lubridate::duration(dday(14)) can be placed anywhere in the search path or in a module.

Because of R scoping, if envir is a simList environment, then this function will search there first, then up the current search() path. Thus, it will find a user defined or module defined unit before a SpaDES unit. This means that a user can override the dyear given in SpaDES, for example, which is 365.25 days, with dyear <- function(x) lubridate::duration(dday(365)).

If time has no unit attribute, then it is assumed to be seconds.