datetime - 为什么在 R 中使用 strptime 解析 "%Y-%m"会给出 NA 结果,但 "%Y-%m-%d"有效?

标签 datetime r

这个问题在这里已经有了答案:





Converting year and month ("yyyy-mm" format) to a date?

(7 个回答)


6年前关闭。




我得到了一个我在 R 中不明白的结果。

如果我使用 strptime用 %Y-%m 格式的年份和日期(如“2009-12”),我得到 NA 结果。但是,如果我添加一天,例如“2009-12-01”,并相应地更改格式字符串,我确实会得到结果。例子:

> strptime("2009-12",format="%Y-%m")
[1] NA
> strptime("2009-12-03",format="%Y-%m-%d")
[1] "2009-12-03"

这是为什么?

更新:我很好奇的是为什么 strptime 不解析一年零一个月,而它不这样做似乎很奇怪的原因是因为它 仅解析一年或一年一天:
> strptime("2009",format="%Y") # year only. Works. Uses current month and day as defaults.
[1] "2009-12-02"
> strptime("2009-03",format="%Y-%d") # year and day. Works. Uses current month as default.
[1] "2009-12-03"
> strptime("2009-03",format="%Y-%m") # year and month. Doesn't work. ?
[1] NA

更新以解释为什么这不是重复的
在这个问题几年后,可能的重复被问到,它与 R 中的一个单独的 API 有关。 : asDate功能。这个问题是关于 strptime 的一个怪癖自 R 起的功能3.1.3 仍然适用。

最佳答案

这对我来说似乎是明智的行为。在我看来,一个更好的问题是“为什么它允许你这样做:strptime("2009-03",format="%Y-%d")?”

这是获得我认为您要实现的目标的解决方法(即具有指定月份和年份的 POSIXlt 对象,但今天是这一天):

as.POSIXlt(paste("2009-12", days(Sys.Date()), sep="-"))

关于datetime - 为什么在 R 中使用 strptime 解析 "%Y-%m"会给出 NA 结果,但 "%Y-%m-%d"有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1828206/

相关文章:

c# - DateTime.Parse 似乎忽略了文化

sqlite - 如何从2表中获取最近的DateTime

linux - 如何在 Linux 中查找目录创建的详细信息

r - dplyr 和间隔 : count observations and sum data without using loops

r - ARMA GARCH 模型的预测错误

r - 如何在 R 中使用 iid 的几个 AR(1) 时间序列

sqlite - 如何将 SQLite 中的当前时间戳存储为滴答?

php - 检查两个日期之间是否包含句点

r - 如何在 R 中编写生成 Pig Latin 的函数

r - 在 x 轴上的离散组之间添加刻度