Skip to contents

Checks whether a vector can be coerced to a base::POSIXct without losing information, returning it silently if so. Otherwise an informative error message is signaled. to_datetime() is a synonym of to_dttm().

Usage

to_dttm(
  x,
  ...,
  tz = "UTC",
  x_arg = caller_arg(x),
  call = caller_env(),
  x_class = object_type(x)
)

to_datetime(
  x,
  ...,
  tz = "UTC",
  x_arg = caller_arg(x),
  call = caller_env(),
  x_class = object_type(x)
)

# S3 method for class 'POSIXct'
to_dttm(x, ..., tz = "UTC", call = caller_env())

# S3 method for class '`NULL`'
to_dttm(x, ..., allow_null = TRUE, x_arg = caller_arg(x), call = caller_env())

# S3 method for class 'character'
to_dttm(
  x,
  ...,
  tz = "UTC",
  x_arg = caller_arg(x),
  call = caller_env(),
  x_class = object_type(x)
)

# S3 method for class 'factor'
to_dttm(
  x,
  ...,
  tz = "UTC",
  x_arg = caller_arg(x),
  call = caller_env(),
  x_class = object_type(x)
)

# S3 method for class 'POSIXlt'
to_dttm(x, ..., tz = "UTC", call = caller_env())

# S3 method for class 'Date'
to_dttm(x, ..., tz = "UTC", call = caller_env())

# S3 method for class 'numeric'
to_dttm(x, ..., tz = "UTC", call = caller_env())

# S3 method for class 'integer'
to_dttm(x, ..., tz = "UTC", call = caller_env())

Arguments

x

The object to stabilize.

...

Arguments passed to methods.

tz

(character(1)) The time zone to normalize x to. Must be "" or a value from OlsonNames(). Defaults to "UTC".

x_arg

(character(1)) The name of the object being stabilized to use in error messages. The automatic value will work in most cases, or pass it through from higher-level functions to make error messages clearer in unexported functions.

call

(environment) The execution environment to mention as the source of error messages.

x_class

(character(1)) The class name of the object being stabilized to use in error messages. Use this if you remove a special class from the object before checking its coercion, but want the error message to match the original class.

allow_null

(logical(1)) Is NULL an acceptable value?

Value

The input as a base::POSIXct vector.

Details

Character vectors must use the RFC 3339 date-time format ("YYYY-MM-DDTHH:MM:SS", optionally followed by fractional seconds and either "Z" or a numeric offset such as "+05:00"); any other shape is rejected (but see stabilize_dttm()). A space may be used instead of "T" to separate the date and time. All values are normalized to the time zone named by tz ("UTC" by default); the underlying instant in time is preserved, only its display time zone changes. Numeric and integer values are treated as the number of seconds since the Unix epoch ("1970-01-01 00:00:00 UTC"). base::Date values are treated as midnight UTC on that date.

Examples

to_dttm(as.POSIXct("2024-01-01 12:00:00", tz = "UTC"))
#> [1] "2024-01-01 12:00:00 UTC"
to_dttm("2024-01-01T12:00:00Z")
#> [1] "2024-01-01 12:00:00 UTC"
to_dttm("2024-01-01T12:00:00-05:00")
#> [1] "2024-01-01 17:00:00 UTC"
to_dttm(c("2024-01-01T12:00:00Z", NA))
#> [1] "2024-01-01 12:00:00 UTC" NA                       
to_dttm(0L)
#> [1] "1970-01-01 UTC"
to_dttm(as.Date("2024-01-01"))
#> [1] "2024-01-01 UTC"
to_dttm(NULL)
#> NULL
try(to_dttm("2024-01-01 12:00:00"))
#> Error in eval(expr, envir) : 
#>   `"2024-01-01 12:00:00"` <character> must be coercible to <datetime>
#>  Can't convert some values due to invalid or ambiguous date-time format.
#>  Locations: 1
#>  Values: "2024-01-01 12:00:00"
try(to_dttm(c("2024-01-01T12:00:00Z", "not-a-datetime")))
#> Error in eval(expr, envir) : 
#>   `c("2024-01-01T12:00:00Z", "not-a-datetime")` <character> must be
#> coercible to <datetime>
#>  Can't convert some values due to invalid or ambiguous date-time format.
#>  Locations: 2
#>  Values: "not-a-datetime"