R: Convert a Numeric Time to a POSIXct Time

numberAsPOSIXct {oce} | R Documentation

## Convert a Numeric Time to a POSIXct Time

### Description

There are many varieties, according to the value of `type` as defined in ‘Details’.

### Usage

    numberAsPOSIXct(t, type = c("unix", "matlab", "gps", "argo", "ncep1",
      "ncep2", "sas", "spss", "yearday", "epic"), tz = "UTC")

### Arguments

`t` | an integer corresponding to a time, in a way that depends on `type`.
`type` | the type of time (see “Details”).
`tz` | a string indicating the time zone, used only for unix and matlab times, since GPS times are always referenced to the UTC timezone.

### Details

- `"unix"` employs Unix times, measured in seconds since the start of the year 1970.

- `"matlab"` employs Matlab times, measured in days since what MathWorks [1] calls “January 0, 0000” (i.e. `ISOdatetime(0, 1, 1, 0, 0, 0)` in R notation).

- `"gps"` employs the GPS convention. For this, `t` is a two-column matrix, with the first column being the the GPS "week" (referenced to 1999-08-22) and the second being the GPS "second" (i.e. the second within the week). Since the GPS satellites do not handle leap seconds, the R-defined `.leap.seconds` is used for corrections.

- `"argo"` employs Argo times, measured in days since the start of the year 1900.

- `"ncep1"` employs NCEP times, measured in hours since the start of the year 1800.

- `"ncep2"` employs NCEP times, measured in days since the start of the year 1. (Note that, for reasons that are unknown at this time, a simple R expression of this definition is out by two days compared with the UDUNITS library, which is used by NCEP. Therefore, a two-day offset is applied. See [2, 3].)

- `"sas"` employs SAS times, indicated by `type="sas"`, have origin at the start of 1960.

- `"spss"` employs SPSS times, in seconds after 1582-10-14.

- `"yearday"` employs a convention in which `t` is a two-column matrix, with the first column being the year, and the second the yearday (starting at 1 for the first second of January 1, to match the convention used by Sea-Bird CTD software).

- `"epic"` employs a convention used in the EPIC software library, from the Pacific Marine Environmental Laboratory, in which `t` is a two-column matrix, with the first column being the julian Day (as defined in `julianDay`, for example), and with the second column being the millisecond within that day. See [4].

### Value

A `POSIXct` time vector.

### Author(s)

Dan Kelley

### References

[1] Matlab times: http://www.mathworks.com/help/matlab/ref/datenum.html

[2] NCEP times: https://www.esrl.noaa.gov/psd/data/gridded/faq.html#3

[3] problem with NCEP times: https://github.com/dankelley/oce/issues/738

[4] EPIC times: software and manuals at https://www.pmel.noaa.gov/epic/download/index.html#epslib; see also Denbo, Donald W., and Nancy N. Soreide. “EPIC.” Oceanography 9 (1996). https://doi.org/10.5670/oceanog.1996.10.

### See Also

`numberAsHMS`

Other things related to time: `ctimeToSeconds`, `julianCenturyAnomaly`, `julianDay`, `numberAsHMS`, `secondsToCtime`, `unabbreviateYear`

### Examples

    numberAsPOSIXct(0)                     # unix time 0
    numberAsPOSIXct(1, type="matlab")      # matlab time 1
    numberAsPOSIXct(cbind(566, 345615), type="gps") # Canada Day, zero hour UTC
    numberAsPOSIXct(cbind(2013, 0), type="yearday") # start of 2013

    ## Epic time, one hour into Canada Day of year 2018. In computing the
    ## Julian day, note that this starts at noon.
    jd <- julianDay(as.POSIXct("2018-07-01 12:00:00", tz="UTC"))
    numberAsPOSIXct(cbind(jd, 1e3 * 1 * 3600), type="epic", tz="UTC")

[Package oce version 1.1-1 Index]