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

R语言含完整月份名称的日期格式转换失败求助

问题原因与解决方案

你的问题根源是R的系统区域设置(locale)不是英文,导致日期解析函数无法识别英文月份全称,进而出现转换失败或解析错误的情况。

验证当前Locale

先运行以下代码查看当前的时间区域设置:

Sys.getlocale("LC_TIME")

如果输出是中文(比如"Chinese (Simplified)_China.936")或其他非英文locale,就会导致英文月份无法被识别。

解决方案1:临时切换到英文Locale

根据你的操作系统,运行对应代码切换时间区域为英文:

  • Windows系统:
Sys.setlocale("LC_TIME", "English")
  • Linux/macOS系统:
Sys.setlocale("LC_TIME", "en_US.UTF-8")

切换后重新测试你的代码:

  1. 测试as.Date转换:
as.Date(c("May/27/2021"), "%B/%d/%Y")
# 输出:[1] "2021-05-27"
  1. 测试lubridate::mdy转换:
library(lubridate)
mdy(c("11/03/2020", "November 3, 2020", "11032020"))
# 输出:[1] "2020-11-03" "2020-11-03" "2020-11-03"

解决方案2:局部指定Locale(不修改全局设置)

如果你不想修改全局locale,可以使用lubridate::parse_date_time并指定locale参数,直接针对当前解析任务设置英文环境:

library(lubridate)
parse_date_time(
  x = c("11/03/2020", "November 3, 2020", "11032020"),
  orders = c("mdy", "mdy", "mdy"),
  locale = "en_US.UTF-8"
)
# 输出:[1] "2020-11-03 UTC" "2020-11-03 UTC" "2020-11-03 UTC"

注意事项

  • 临时切换locale只在当前会话有效,关闭R后会恢复默认设置。
  • 如果切换locale失败,可能是你的系统没有安装对应的英文语言包,需要先在系统设置中添加英文语言支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:30:30