转换字符日期

时间:2018-03-27 19:31:56

标签: r lubridate

我正在尝试在R中转换字符日期:

Before          After
"31/03/2018"    "201804"
"30/06/2018"    "201807"
"30/09/2018"    "201810"
"31/12/2018"    "201901"

月份提前一个月。这对于尝试将日历日期转换为加拿大财政日期的人有所帮助,该日期是在第1,4,7和10个月之后,而不是在其他地方(通常)的第3,6,9和12个月。

3 个答案:

答案 0 :(得分:0)

看起来你还没有尝试过任何东西,你走了:

format(as.Date("31/03/2018","%d/%m/%Y")+1,"%Y%m")
format(as.Date(Before,"%d/%m/%Y")+1,"%Y%m")

答案 1 :(得分:0)

使用lubridate,事情就像添加一天一样简单:

library(lubridate)
before <- c("31/03/2018","30/06/2018","30/09/2018","31/12/2018")
after <- dmy(before)+days(1)
format(after, "%Y%m")

答案 2 :(得分:0)

在这种情况下,使用%m+%运算符非常方便。 %m+% months(1)将在日期中添加1个月,或者%m+% months(2)将添加2个月的日期。甚至可以使用%m+% years(1)1年添加到日期变量中。

library(lubridate)

v <- c("31/03/2018", "30/06/2018", "30/09/2018", "31/12/2018")


format((dmy(v) %m+% months(1)), "%Y%m")
#[1] "201804" "201807" "201810" "201901"