如何防止 R 将 2021-01-01 变成周数 2021-53?

时间:2021-03-15 20:22:31

标签: r date

我遇到了一些奇怪的事情。我想从日期中提取周数。

看看 1 月 1 日发生了什么:

strftime(as.Date("2021-01-01"), format = "%Y-%V")
[1] "2021-53"

显然这是不对的。 这里会发生什么,我该如何防止这种情况发生?

1 个答案:

答案 0 :(得分:4)

53 是正确的,因为 2021-01-01ISO week date 系统在 2020 年的第 53 周。第 53 周从 2020 年 12 月 28 日到 2021 年 1 月 3 日(含)。

2021 不正确。现在不是 2021 年的第 53 周,而是 2020 年的第 53 周。

问题是您当年使用的是 %Y。当与周数结合使用时,您应该使用 %G 来表示年份。 See the docs here.

此外,ISO 8601 标准要求在周数之前添加 W 才能完全符合要求。将您的格式更改为 "%G-W%V",它将正确生成 "2020-W53"