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

R语言格式化含星期的日期列时分始终显示00:00问题求助

问题原因

时间全部显示为00:00的核心原因是解析函数使用错误:

  • as.Date() 仅支持存储年月日级别的纯日期值,设计上就不保留时分秒信息,哪怕你在格式字符串里写了%H:%M的匹配规则,解析完成后时间部分也会被直接截断,统一设为当日0点。
  • 另外你贴的示例构造代码有个小bug:data.frame(a,b,c,stringsAsFactors = FALSE)里的c对象没有定义,直接运行会报错,实际使用时删掉这个不存在的列即可。
修复方案

用支持日期时间存储的as.POSIXct()替换as.Date()做解析即可,POSIXct类型会完整保留时分秒信息,后续格式化就不会丢失时间:

library(dplyr)

# 构造测试数据
a <- c(1:6)
Date <- c("Tuesday, 05 December 2012 05:00","Tuesday, 05 December 2012 06:55","Tuesday, 05 December 2012 07:10",
          "Tuesday, 05 December 2012 10:23", "Tuesday, 05 December 2012 11:43","Tuesday, 05 December 2012 13:04")
b <- c("0","0","0","1","1","1")
df1 <- data.frame(a, b, Date, stringsAsFactors = FALSE)

# 正确转换代码
df1 <- df1 %>%
  mutate(DateTime = format(as.POSIXct(Date, format = "%A, %d %B %Y %H:%M"), "%d-%m-%Y %H:%M"))

运行后得到的结果如下,时间部分会正常保留:

a                            Date b         DateTime
1 1 Tuesday, 05 December 2012 05:00 0 05-12-2012 05:00
2 2 Tuesday, 05 December 2012 06:55 0 05-12-2012 06:55
3 3 Tuesday, 05 December 2012 07:10 0 05-12-2012 07:10
4 4 Tuesday, 05 December 2012 10:23 1 05-12-2012 10:23
5 5 Tuesday, 05 December 2012 11:43 1 05-12-2012 11:43
6 6 Tuesday, 05 December 2012 13:04 1 05-12-2012 13:04

小提示:如果运行后出现时间偏移的问题,是系统默认时区导致的,可以在as.POSIXct()中指定时区参数,比如国内用户可以写as.POSIXct(Date, format = "%A, %d %B %Y %H:%M", tz = "Asia/Shanghai")即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 17:33:40