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

如何将字符型日期(如19-Feb-03)转换为日期格式?

解决字符型日期转换问题

当你使用as.Date()失败时,核心原因是未指定匹配你日期格式的format参数——as.Date()默认格式为%Y-%m-%d(如2003-02-19),和你的19-Feb-03(日-月份缩写-两位年份)结构不匹配。

方法1:用as.Date()指定格式

针对你的日期格式,需要传入对应格式码:

  • %d:两位数字的日期(如19)
  • %b:英文缩写的月份名称(如Feb,若系统默认语言为中文,需先执行Sys.setlocale("LC_TIME", "English")确保识别)
  • %y:两位数字的年份(如03)

示例代码:

# 测试单个日期
as.Date("19-Feb-03", format = "%d-%b-%y")
# 输出:"2003-02-19"

# 处理数据框中的Date列
df$Date <- as.Date(df$Date, format = "%d-%b-%y")

方法2:用lubridate包简化操作

如果不想手动写格式码,lubridate包的dmy()函数可自动识别日-月-年结构的日期:

library(lubridate)

# 测试单个日期
dmy("19-Feb-03")
# 输出:"2003-02-19"

# 处理数据框列
df$Date <- dmy(df$Date)

注意:两位年份的解析规则

as.Date()和lubridate对两位年份的默认处理逻辑:

  • 00-69 对应 2000-2069
  • 70-99 对应 1970-1999
    若需自定义年份范围,可使用lubridate的parse_date_time():
parse_date_time("19-Feb-03", orders = "dby", cutoff_2000 = 30)
# cutoff_2000=30表示:00-29对应2000-2029,30-99对应1930-1999

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:30:47