一年中一周的奇怪的R strptime行为

时间:2014-05-22 04:04:16

标签: r parsing datetime

有人请解释一下:

strptime(c("2010-01", "2010-02"), format="%Y-%W")
[1] "2010-05-21" "2010-05-21"

为什么5月21日?我期待一年中的​​第一周和第二周(01)和(02)在一月...%W是一年中的一周,不是吗?

ISOweek2date在ISOweek包中起作用:

library(ISOweek)
ISOweek2date(c("2010-W01-1", "2010-W02-1"))
[1] "2010-01-04" "2010-01-11"

2 个答案:

答案 0 :(得分:3)

今天(至少是)5月21日。当你没有提供足够的信息来获得确切的一天时,R决定使用当前的日期时间值填写 - 例如 -

strptime("2010",format="%Y")
#[1] "2010-05-22 EST"

strptime(c("2010-01", "2010-02"), format="%Y-%W")
#[1] "2010-05-22 EST" "2010-05-22 EST"

答案 1 :(得分:3)

要获得与ISOweek2date相同的结果,您应该在时间字符串和格式中为strptime提供与ISOweek2date相同级别的详细信息。

因此,在时间字符串中为一周的第一天添加“-1”,在格式字符串中为-%w添加“{1}”:

ISOweek2date

如上所述,如果没有足够的信息,您将获得当前日期