Lubridate: character method for as_date forces `tz` arg when `format` present, doesn't use it

Created on 17 May 2018  路  3Comments  路  Source: tidyverse/lubridate

If you try to convert a string using lubridate::as_date while specifying the format, you must also set tz, but it isn't used.

library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#> 
#>     date

x <- "05172018"

as_date(x)
#> Warning: All formats failed to parse. No formats found.
#> [1] NA

as_date(x, format = "%m%d%Y")
#> Error in strptime(x, format, tz): invalid 'tz' value

as_date(x, tz = "America/New_York", format = "%m%d%Y")
#> [1] "2018-05-17"

tz(.Last.value)
#> [1] "UTC"

Current Github version, 1.7.4.

On the one hand, this is unexpected, surprising behavior, but on the other hand, do timezones _ever_ matter for Date's?

In the very least, seems like you shouldn't need the tz arg here; the second option should work.

bug wip

All 3 comments

Indeed, should be fixed.

as_date is not an idiomatic parser btw. Use mdy for this particular case.

per discussion on #675 should as_date have its tz arg removed?

Minimal reprex:

library(lubridate, warn.conflicts = FALSE)
x <- "05172018"

as_date(x)
#> Warning: All formats failed to parse. No formats found.
#> [1] NA

as_date(x, format = "%m%d%Y")
#> Error in strptime(x, format, tz): invalid 'tz' value

as_date(x, tz = "America/New_York", format = "%m%d%Y")
#> [1] "2018-05-17"

Created on 2019-11-19 by the reprex package (v0.3.0)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

saberbouabid picture saberbouabid  路  3Comments

awfrankwils picture awfrankwils  路  7Comments

vspinu picture vspinu  路  6Comments

arnonerba picture arnonerba  路  9Comments

rappster picture rappster  路  10Comments