R strptime:使用%V的yyyyww转换表现很奇怪

时间:2017-11-01 01:07:40

标签: r strptime

我正在尝试创建从周密钥到yyyyww的映射。例如,第1周为200113,第2周为200114,依此类推。

在我的系统中,第一周从2001-03-26开始,周一周开始,一年中的几周从01-53开始。

我正在使用%V striptime进行测试,但发现了奇怪的行为:

day1 <- as.Date("20010326", "%Y%m%d")
format(day1, "%Y%V") # output "200113", which is correct

然而,当我反向做的时候:

as.Date("200113", format = "%Y%V") # output "2001-11-01"
as.Date("200113 1", format = "%Y%V %u") # output "2001-11-01"

as.Date与%Y%V未能返回正确的日期。我错过了什么吗?

其他测试:

format(as.Date("2001-03-26")+7*39, "%Y%V") # returns "200152"
format(as.Date("2001-03-26")+7*40, "%Y%V") # returns "200101"
format(as.Date("2001-12-31"), "%Y%V") # returns "200101"

最后两个应该返回&#34; 200201&#34;,似乎R没有自动增加年份。

额外的测试:我现在正在做的事情有点令人讨厌但有效:

date <- as.Date("2001-03-26") + 7*(week_key-1),
year <- year(date),
month <- month(date),
week <- as.numeric(format(date, "%V")),
yyyyww <- ifelse(week==1 & month==12, 100*(year+1)+week, 100*year+week)

0 个答案:

没有答案