Learn R Programming

MazamaCoreUtils (version 0.3.9)

parseDatetime: Parse datetime strings

Description

Transforms numeric and string representations of Ymd[HMS] datetimes to POSIXct format.

Ymd, YmdH, YmdHM, and YmdHMS formats are understood, where:

Y

four digit year

m

month number (1-12, 01-12) or english name month (October, oct.)

d

day number of the month (0-31 or 01-31)

H

hour number (0-24 or 00-24)

M

minute number (0-59 or 00-59)

S

second number (0-61 or 00-61)

This allows for mixed inputs. For example, 20181012130900, "2018-10-12-13-09-00", and "2018 Oct. 12 13:09:00" will all be converted to the same POSIXct datetime. The incoming datetime vector does not need to have a homogeneous format either -- "20181012" and "2018-10-12 13:09" can exist in the same vector without issue. All incoming datetimes will be interpreted in the specified timezone.

If datetime is a POSIXct it will be returned unmodified, and formats not recognized will be returned as NA.

Usage

parseDatetime(datetime = NULL, timezone = NULL, expectAll = FALSE,
  julian = FALSE, quiet = TRUE)

Arguments

datetime

vector of character or integer datetimes in Ymd[HMS] format (or POSIXct).

timezone

Olson timezone at the location of interest.

expectAll

Logical value determining if the function should fail if any elements fail to parse (default FALSE).

julian

Logical value determining whether datetime should be interpreted as a Julian date with day of year as a decimal number.

quiet

Logical value passed on to lubridate::parse_date_time to optionally suppress warning messages.

Value

A vector of POSIXct datetimes.

Mazama Science Conventions

Within Mazama Science package, datetimes not in POSIXct format are often represented as decimal values with no separation (ex: 20181012, 20181012130900), either as numerics or strings.

Implementation

parseDatetime is essentially a wrapper around parse_date_time, handling which formats we want to account for.

See Also

parse_date_time for implementation details.

Examples

Run this code
# NOT RUN {
starttime <- parseDatetime(2015080718, timezone = "America/Los_Angeles")
datetimes <- parseDatetime(
  c("20181014 12", "20181015 12", "20181016 12"),
  timezone = "America/New_York"
)

# }
# NOT RUN {
badInput <- c("20181013", NA, "20181015", "181016", "10172018")

# This will return a vector with the date that were able to parse
parseDatetime(badInput, timezone = "UTC", expectAll = FALSE)

# This will return an error, since some non-NA indices didn't parse
parseDatetime(badInput, timezone = "UTC", expectAll = TRUE)
# }
# NOT RUN {
# }

Run the code above in your browser using DataLab