R: Date-time Conversion Functions

as.POSIX* {base} | R Documentation

## Date-time Conversion Functions

### Description

Functions to manipulate objects of classes `"POSIXlt"` and `"POSIXct"` representing calendar dates and times.

### Usage

    as.POSIXct(x, tz = "")
    as.POSIXlt(x, tz = "")

    ## S3 method for class 'POSIXlt':
    as.double(x, ...)

### Arguments

`x` | An object to be converted.
`tz` | A timezone specification to be used for the conversion, if one is required. System-specific, but `""` is the current timezone, and `"GMT"` is UTC (Coordinated Universal Time, in French).
`...` | further arguments to be passed to or from other methods.

### Details

The `as.POSIX*` functions convert an object to one of the two classes used to represent date/times (calendar dates plus time to the nearest second). They can convert a wide variety of objects, including objects of the other class and of classes `"Date"`, `"date"` (from package date or survival), `"chron"` and `"dates"` (from package chron) to these classes. Dates without times are treated as being at midnight UTC.

They can also convert character strings of the formats `"2001-02-03"` and `"2001/02/03"` optionally followed by white space and a time in the format `"14:52"` or `"14:52:03"`. (Formats such as `"01/02/03"` are ambiguous but can be converted via a format specification by `strptime`.) Fractional seconds are allowed.

Logical `NA`s can be converted to either of the classes, but no other logical vectors can be.

The `as.double` method converts `"POSIXlt"` objects to `"POSIXct"`.

If you are given a numeric time as the number of seconds since an epoch, see the examples.

Where OSes describe their valid timezones can be obscure. The help for `tzset` (or `_tzset` on Windows) can be helpful, but it can also be inaccurate. There is a cumbersome POSIX specification (listed under environment variable `TZ` at http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html), which is often at least partially supported, but there may be other more user-friendly ways to specify timezones. For most Unix-alikes (including MacOS X) this can be an optional colon prepended to the path to a file (by default under ‘/usr/share/zoneinfo’ or ‘/usr/lib/zoneinfo’ (or even ‘/usr/share/lib/zoneinfo’ on Solaris)), for example ‘EST5EDT’ or ‘GB’ or ‘Europe/Paris’. See http://www.twinsun.com/tz/tz-link.htm for more details and references.

### Value

`as.POSIXct` and `as.POSIXlt` return an object of the appropriate class. If `tz` was specified, `as.POSIXlt` will give an appropriate `"tzone"` attribute.

### Note

If you want to extract specific aspects of a time (such as the day of the week) just convert it to class `"POSIXlt"` and extract the relevant component(s) of the list, or if you want a character representation (such as a named day of the week) use `format.POSIXlt` or `format.POSIXct`.

If a timezone is needed and that specified is invalid on your system, what happens is system-specific but it will probably be ignored.

### See Also

DateTimeClasses for details of the classes; `strptime` for conversion to and from character representations.

### Examples

    (z <- Sys.time())             # the current datetime, as class "POSIXct"
    unclass(z)                    # a large integer
    floor(unclass(z)/86400)       # the number of days since 1970-01-01
    (z <- as.POSIXlt(Sys.time())) # the current datetime, as class "POSIXlt"
    unlist(unclass(z))            # a list shown as a named vector

    ## suppose we have a time in seconds since 1960-01-01 00:00:00 GMT
    z <- 1472562988
    # two ways to convert this
    ISOdatetime(1960,1,1,0,0,0) + z # late August 2006
    strptime("1960-01-01", "%Y-%m-%d", tz="GMT") + z

    as.POSIXlt(Sys.time(), "GMT") # the current time in GMT
    ## Not run:
    ## These may not be correct names on your system
    as.POSIXlt(Sys.time(), "EST5EDT")  # the current time in New York
    as.POSIXlt(Sys.time(), "EST" )     # ditto, ignoring DST
    as.POSIXlt(Sys.time(), "HST")      # the current time in Hawaii
    as.POSIXlt(Sys.time(), "Australia/Darwin")
    ## End(Not run)

[Package base version 2.6.2 Index]