You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让lubridate的parse_date_time()识别闰年的12月31日?

解决lubridate中parse_date_time解析闰年第366天的问题

我有一组日数向量(非闰年1-365,闰年1-366)和年份向量,使用lubridate包的parse_date_time()函数转换为yyyy-mm-dd格式日期时,遇到了闰年12月31日的解析问题:函数无法识别闰年,会返回NA,且2月之后的日期还会出现年份偏移。

问题复现代码

> parse_date_time(366,2004, order = "j", tz="UTC")
[1] NA
Warning message:
 1 failed to parse. 

非闰年正常解析示例

> parse_date_time(336,2005, order = "j", tz="UTC")
[1] "2023-12-02 UTC"

我知道lubridate有leap_year()函数,但它仅适用于已转换为日期格式的数据,无法解决当前未解析的问题。


解决方案

将日数和年份拼接成字符串,同时在parse_date_time()中指定order = "j,Y",让函数同时解析年和日序数,即可正确识别闰年的第366天。

向量场景示例(解决方案验证)

> j<-c(4,342,366)
> y<-c(2013,2015,2012)
> parse_date_time(paste(j,y), order = "j,Y", tz="UTC")%>%as_datetime()
[1] "2013-01-04 UTC" "2015-12-08 UTC" "2012-12-31 UTC"

内容的提问来源于stack exchange,提问作者ghaines

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 23:07:24