parseDatetime {MazamaCoreUtils} | R Documentation |
Parse datetime strings
Description
Transforms numeric and string representations of Ymd[HMS] datetimes to
POSIXct
format.
Y, Ym, 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,
isJulian = FALSE,
quiet = TRUE
)
Arguments
datetime |
Vector of character or integer datetimes in Ymd[HMS] format (or POSIXct). |
timezone |
Olson timezone used to interpret dates (required). |
expectAll |
Logical value determining if the function should fail if
any elements fail to parse (default |
isJulian |
Logical value determining whether |
quiet |
Logical value passed on to |
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.
Note
If datetime
is a character string containing signed offset
information, e.g. "-07:00", this information is used to generate an
equivalent UTC time which is then assigned to the timezone specified by
the timezone
argument.
See Also
parse_date_time
for implementation details.
Examples
library(MazamaCoreUtils)
# All y[md-hms] formats are accepted
parseDatetime(2018, timezone = "America/Los_Angeles")
parseDatetime(201808, timezone = "America/Los_Angeles")
parseDatetime(20180807, timezone = "America/Los_Angeles")
parseDatetime(2018080718, timezone = "America/Los_Angeles")
parseDatetime(201808071812, timezone = "America/Los_Angeles")
parseDatetime(20180807181215, timezone = "America/Los_Angeles")
parseDatetime("2018-08-07 18:12:15", timezone = "America/Los_Angeles")
parseDatetime("2018-08-07 18:12:15-07:00", timezone = "America/Los_Angeles")
parseDatetime("2018-08-07 18:12:15-07:00", timezone = "UTC")
# Julian days are accepeted
parseDatetime(2018219181215, timezone = "America/Los_Angeles",
isJulian = TRUE)
# Vector dates are accepted and daylight savings is respected
parseDatetime(
c("2018-10-24 12:00", "2018-10-31 12:00",
"2018-11-07 12:00", "2018-11-08 12:00"),
timezone = "America/New_York"
)
badInput <- c("20181013", NA, "20181015", "181016", "10172018")
# Return a vector with \code{NA} for dates that could not be parsed
parseDatetime(badInput, timezone = "UTC", expectAll = FALSE)
## Not run:
# Fail if any dates cannot be parsed
parseDatetime(badInput, timezone = "UTC", expectAll = TRUE)
## End(Not run)