lubridate (version 1.3.0)

parse_date_time: Parse character and numeric date-time vectors with user friendly order formats.

Description

As strptime parse_date_time parses a character vector into POSIXct date-time object but with two major differences. First, it allows the user to specify only the order in which the formats occur, with no need to include separators and "%" prefix. Second, it allows the user to specify several format-orders to handle heterogeneous date-time character representations. See examples.

Usage

parse_date_time(x, orders, tz = "UTC", truncated = 0,
    quiet = FALSE, locale = Sys.getlocale("LC_TIME"),
    select_formats = .select_formats)

Arguments

x
a character or numeric vector of dates
orders
a character vector of date-time formats. Each order string is series of formatting characters as listed strptime but might not include the "%" prefix, for example "ymd" will match all the possi
tz
a character string that specifies the time zone with which to parse the dates
truncated
integer, number of formats that can be missing. The most common type of irregularity in date-time data is the truncation due to rounding or unavailability of the time stamp. If truncated parameter is non-zero parse_date_time
quiet
logical. When TRUE progress messages are not printed, and "no formats found" error is surpresed and the function simply returns a vector of NAs. This mirrors the behavior of base R functions strptime and as.POSIXct. Defa
locale
locale to be used, see locales. On linux systems you can use system("locale -a") to list all the installed locales.
select_formats
A function to select actual formats for parsing from a set of formats which matched a training subset of x. This should be function receiving a named integer vector and returning a character vector of selected formats. Names of the in

Value

  • a vector of POSIXct date-time objects

Details

When several format-orders are specified parse_date_time sorts the supplied format-orders based on a training set and then applies them recursively on the input vector.

Below are all the implemented formats recognized by lubridate. For numeric formats leading 0s are optional. All formats are case insensitive.

As compared to strptime, some of the formats have been extended for efficiency reasons. They are marked with "*"

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],.,[object Object],[object Object],[object Object]

See Also

strptime, ymd, ymd_hms

Examples

Run this code
x <- c("09-01-01", "09-01-02", "09-01-03")
parse_date_time(x, "ymd")
parse_date_time(x, "%y%m%d")
parse_date_time(x, "%y %m %d")
#  "2009-01-01 UTC" "2009-01-02 UTC" "2009-01-03 UTC"

## ** heterogenuous formats **
x <- c("09-01-01", "090102", "09-01 03", "09-01-03 12:02")
parse_date_time(x, c("%y%m%d", "%y%m%d %H%M"))

## different ymd orders:
x <- c("2009-01-01", "02022010", "02-02-2010")
parse_date_time(x, c("%d%m%Y", "ymd"))
##  "2009-01-01 UTC" "2010-02-02 UTC" "2010-02-02 UTC"

## ** truncated time-dates **
x <- c("2011-12-31 12:59:59", "2010-01-01 12:11", "2010-01-01 12", "2010-01-01")
parse_date_time(x, "%Y%m%d %H%M%S", truncated = 3)
parse_date_time(x, "ymd_hms", truncated = 3)
## "2011-12-31 12:59:59 UTC" "2010-01-01 12:11:00 UTC" "2010-01-01 12:00:00 UTC" "2010-01-01 00:00:00 UTC"

Run the code above in your browser using DataCamp Workspace