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, 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"` handles Unix times, measured in seconds since the start of the year 1970.

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

- `"gps"` handles 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"` handles Argo times, measured in days since the start of the year 1900.

- `"excel"` handles Excel times, measured in days since the start of the year 1900. (Note that excel incorrectly regards 1900 as a leap year, so 1 day is subtracted from `t` unless the time is less than or equal to 1900 Feb 28. Note that NA is returned for the day 60, which is what excel codes for "Feb 29, 1900", the non-existing day that excel accepts.

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

- `"ncep2"` handles 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 references 2 and 3.)

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

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

- `"yearday"` handles 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"` handles 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 reference 4.

`"vms"` handles a convention used in the VMS operating system and for Modified Julian Day, in which `t` is the number of seconds past 1859-11-17T00:00:00 UTC. See reference 5.

### Value

A `POSIXct()` time vector.

### Author(s)

Dan Kelley

### References

1. Matlab times: https://www.mathworks.com/help/matlab/ref/datenum.html

2. NCEP times: https://psl.noaa.gov/data/gridded/faq.html

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). doi: 10.5670/oceanog.1996.10

5. VMS times: https://en.wikipedia.org/wiki/Epoch_(computing)

### 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, 1), 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.7-2 Index]