我正在尝试创建从周密钥到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)