如何处理lubridate的ymd默认值的变化

时间:2017-09-01 14:49:38

标签: r lubridate

来自lubridate的ymdtz的默认值为UTC。我不确切知道何时进行了更改,但我知道在1.5中默认为UTC但在1.5.8中默认为NULL

这会将ymd的输出从POSIXct个对象更改为Date个对象,这会破坏我的很多代码,我依赖于POSIXct个对象但现在有了Date。有没有一种方便的方法可以向后兼容,还是我需要将tz='UTC'添加到依赖于此的所有旧代码中?

1 个答案:

答案 0 :(得分:2)

编写一个包装,将ymd替换为ymd_hms,其默认值仍为tz = "UTC"

library(lubridate)
ymd2 = function(x){
    ymd_hms(paste(x, "00:00:00"))
}

ymd2("2017/3/4")
#[1] "2017-03-04 UTC"

class(ymd2("2017/3/4"))
#[1] "POSIXct" "POSIXt"