nanoperiod is a length of time type (implemented as an S4
class) with nanosecond precision. It differs from
nanoduration because it is capable of representing calendar
months and days. It can thus represent years (12 months) and weeks (7
days). A period is a somewhat abstract representation of time: it is
only when anchored to a point in time and in a specific time zone that
it is possible to convert it to a specific duration. This means that
many of the operations involving periods need the additional argument
tz.
nanoperiod(months = 0, days = 0, duration = as.nanoduration(0))
# S4 method for signature 'character'
as.nanoperiod(x)
# S4 method for signature 'integer64'
as.nanoperiod(x)
# S4 method for signature 'numeric'
as.nanoperiod(x)
# S4 method for signature 'integer'
as.nanoperiod(x)
# S4 method for signature 'nanoduration'
as.nanoperiod(x)
# S4 method for signature ''NULL''
as.nanoperiod(x)
# S4 method for signature 'missing'
as.nanoperiod(x)
# S4 method for signature 'nanoperiod'
show(object)
# S4 method for signature 'nanoperiod'
print(x, quote = FALSE, ...)
# S3 method for class 'nanoperiod'
format(x, ...)
# S4 method for signature 'nanoperiod'
as.character(x)
# S4 method for signature 'nanoperiod'
is.na(x)
# S4 replacement method for signature 'nanoperiod'
is.na(x) <- value
# S4 method for signature 'nanoperiod'
x[[i, j, ..., drop = FALSE]]
# S4 method for signature 'nanoperiod,numeric'
x[i, j, ..., drop = FALSE]
# S4 method for signature 'nanoperiod,logical'
x[i, j, ..., drop = FALSE]
# S4 method for signature 'nanoperiod,character'
x[i, j, ..., drop = FALSE]
# S4 method for signature 'nanoperiod,ANY'
x[i, j, ..., drop = FALSE]
# S4 replacement method for signature 'nanoperiod,ANY,ANY,ANY'
x[i, j, ...] <- value
# S3 method for class 'nanoperiod'
c(...)
# S4 method for signature 'nanoperiod'
names(x)
# S4 replacement method for signature 'nanoperiod'
names(x) <- value
# S4 method for signature 'nanoperiod,ANY'
e1 - e2
# S4 method for signature 'nanoperiod,nanoperiod'
e1 - e2
# S4 method for signature 'nanoperiod,nanoduration'
e1 - e2
# S4 method for signature 'nanoperiod,integer64'
e1 - e2
# S4 method for signature 'nanoperiod,numeric'
e1 - e2
# S4 method for signature 'nanoduration,nanoperiod'
e1 - e2
# S4 method for signature 'integer64,nanoperiod'
e1 - e2
# S4 method for signature 'numeric,nanoperiod'
e1 - e2
# S4 method for signature 'nanoperiod,ANY'
e1 + e2
# S4 method for signature 'nanoperiod,nanoperiod'
e1 + e2
# S4 method for signature 'nanoperiod,nanoduration'
e1 + e2
# S4 method for signature 'nanoperiod,integer64'
e1 + e2
# S4 method for signature 'nanoperiod,nanotime'
e1 + e2
# S4 method for signature 'nanoival,nanoperiod'
e1 + e2
# S4 method for signature 'nanoperiod,nanoival'
e1 + e2
# S4 method for signature 'nanotime,nanoperiod'
e1 + e2
# S4 method for signature 'nanoperiod,numeric'
e1 + e2
# S4 method for signature 'nanoduration,nanoperiod'
e1 + e2
# S4 method for signature 'integer64,nanoperiod'
e1 + e2
# S4 method for signature 'numeric,nanoperiod'
e1 + e2
# S4 method for signature 'nanoperiod,integer64'
e1 * e2
# S4 method for signature 'nanoperiod,numeric'
e1 * e2
# S4 method for signature 'integer64,nanoperiod'
e1 * e2
# S4 method for signature 'numeric,nanoperiod'
e1 * e2
# S4 method for signature 'nanoperiod,integer64'
e1 / e2
# S4 method for signature 'nanoperiod,numeric'
e1 / e2
# S4 method for signature 'nanoperiod,nanoperiod'
e1 == e2
# S4 method for signature 'nanoperiod,nanoperiod'
e1 != e2
# S4 method for signature 'nanotime,nanoperiod,character'
plus(e1, e2, tz)
# S4 method for signature 'nanoperiod,nanotime,character'
plus(e1, e2, tz)
# S4 method for signature 'nanotime,nanoperiod,character'
minus(e1, e2, tz)
# S4 method for signature 'nanoperiod,nanotime,character'
minus(e1, e2, tz)
# S4 method for signature 'nanoival,nanoperiod,character'
plus(e1, e2, tz)
# S4 method for signature 'nanoperiod,nanoival,character'
plus(e1, e2, tz)
# S4 method for signature 'nanoival,nanoperiod,character'
minus(e1, e2, tz)
NA_nanoperiod_
| months | Used in the constructor to indicate the number of months of the nanoperiod | 
| days | Used in the constructor to indicate the number of days of the nanoperiod | 
| duration | Used in the constructor to indicate the duration component of the nanoperiod | 
| x,value | An object of class nanoperiod | 
| object | argument for method show | 
| quote | indicates if the output of printshould be quoted | 
| … | further arguments | 
| i | index specifying elements to extract or replace. | 
| j | Required for \[signature but ignored here | 
| drop | Required for \[signature but ignored here | 
| e1 | Operand of class nanoperiod | 
| e2 | Operand of class nanoperiod | 
| tz | characterindicating a timezone | 
An object of class nanoperiod of length 1.
The true constructor is
A nanoperiod is displayed as months, days, and
nanoduration like this:
10m2d/10:12:34.123_453_000.
Adding or subtracting nanoperiod and nanotime
require a timezone as third argument. For this reason it is not possible
to use the binary operator ‘+’. Instead the functions
‘plus’ and ‘minus’ are defined. These
functions attempt to keep the same offset within a day in the specified
timezone: this means for instance that adding a day when that day
crosses a time zone adjustment such as a daylight saving time, results
in a true time increment of less or more than 24 hours to preserve the
offset. Preserving the offset works for increments that are smaller than
a day too, provided the increment results in a datetime where the
timezone adjustment is valid. When this is not the case, adding a
‘nanoperiod’ behaves in the same way as adding a ‘nanoduration’.
Dirk Eddelbuettel
Leonardo Silvestri
nanotime, nanoduration, nanoival,
nanoperiod.month,nanoperiod-method
library("nanotime")
p <- nanoperiod(months=12, days=7, duration="01:00:00")
print(p)
#  when adding a \code{nanoperiod} to a \code{nanotime} or to a
# \code{nanoival}, a time zone must be specified:
y <- nanotime("1970-01-01T00:00:00+00:00")
plus(y, p, tz="America/Chicago")