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

如何在Excel或R中分离「4/13/2016 12:00:00 AM」这类日期时间数据?

分离「MM/DD/YYYY HH:MM:SS AM/PM」格式的日期与时间(Excel & R)

Excel 处理方法

方法1:公式提取

假设目标数据在单元格A1:

  • 提取日期:使用=INT(A1),之后将单元格格式设置为「日期」(可按需选择yyyy/mm/dd等格式)
  • 提取时间:使用=MOD(A1,1),之后将单元格格式设置为「时间」(可选hh:mm:ss或带AM/PM的格式)
  • 若需直接提取文本格式的日期/时间,用TEXT函数:
    • 日期:=TEXT(A1,"yyyy/mm/dd")
    • 时间:=TEXT(A1,"hh:mm:ss AM/PM")

方法2:分列工具

  1. 选中包含日期时间数据的列
  2. 点击「数据」选项卡 → 「分列」
  3. 向导第一步选择「分隔符号」,点击「下一步」
  4. 勾选「空格」作为分隔符,点击「下一步」
  5. 分别设置两列的数据格式(第一列设为「日期」,第二列设为「时间」),点击「完成」

R 处理方法

基础R实现

先将字符串转换为日期时间对象,再提取日期和时间:

# 示例数据
datetime_str <- c("4/13/2016 12:00:00 AM", "5/20/2017 3:45:00 PM")

# 转换为POSIXct对象
datetime_obj <- as.POSIXct(datetime_str, format = "%m/%d/%Y %I:%M:%S %p")

# 提取日期(可自定义格式,比如"%m/%d/%Y")
date_col <- format(datetime_obj, "%Y-%m-%d")

# 提取时间(12小时制带AM/PM用"%I:%M:%S %p",24小时制用"%H:%M:%S")
time_col <- format(datetime_obj, "%I:%M:%S %p")

使用lubridate包(更简洁)

lubridate专门处理日期时间,解析和提取更直观:

library(lubridate)

# 解析字符串为日期时间对象
datetime_obj <- mdy_hms(datetime_str)

# 提取日期
date_col <- date(datetime_obj)

# 提取时间(用hms包转换为纯时间格式)
time_col <- hms::as_hms(datetime_obj)

如果是处理数据框,结合dplyr批量处理:

library(dplyr)
library(lubridate)

# 假设数据框为df,日期时间列名为datetime_str
df <- df %>%
  mutate(
    datetime = mdy_hms(datetime_str),
    date = date(datetime),
    time = as_hms(datetime)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:54:23