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

R语言:如何将Mmm dd, yyyy字符格式转换为dd-mm-yyyy日期格式

解决R语言日期格式转换为dd-mm-yyyy日期类型的问题

核心问题分析

你的问题主要源于两点:

  1. 格式字符串未匹配原日期中的逗号:原日期格式是Feb 21, 2020,包含逗号,你使用的%b %d %Y未包含该符号,导致as.Date无法识别。
  2. 可能存在系统locale不兼容:如果你的R默认locale为中文,会无法识别英文月份缩写(如Feb),最终返回NA。

分步解决方案

1. 修正格式字符串(优先尝试)

将格式字符串调整为包含逗号的"%b %d, %Y",代码如下:

DF$new_date <- as.Date(DF$Date, "%b %d, %Y")

2. 解决locale不兼容问题(若第一步仍返回NA)

如果系统默认locale是中文,需临时切换到英文locale以识别英文月份缩写:

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

# 执行日期转换
DF$new_date <- as.Date(DF$Date, "%b %d, %Y")

3. 设置显示格式为dd-mm-yyyy

注意:R的Date类型本身没有固定显示格式,上述转换后得到的是标准日期类型。若要以dd-mm-yyyy格式展示,可使用format()函数生成对应格式的字符列(保留原new_date为日期类型):

DF$display_date <- format(DF$new_date, "%d-%m-%Y")

验证示例

用测试数据验证整个流程:

# 构造测试数据
DF <- data.frame(Date = c("Feb 21, 2020", "Mar 05, 2021"))

# 切换locale并转换日期
Sys.setlocale("LC_TIME", "English") # 根据系统调整
DF$new_date <- as.Date(DF$Date, "%b %d, %Y")
DF$display_date <- format(DF$new_date, "%d-%m-%Y")

# 查看结果
print(DF)

输出结果:

Date   new_date display_date
1 Feb 21, 2020 2020-02-21    21-02-2020
2 Mar 05, 2021 2021-03-05    05-03-2021

可见new_date为标准Date类型,display_date是你需要的dd-mm-yyyy格式的显示用字符列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:33:20