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

MATLAB 2023b中拆分特定格式日期时间为两列的方法

解决MATLAB拆分日期时间列的问题

针对你遇到的CSV列包含"星期, 月份全称 日期, 年份 时间 AM/PM"格式的情况,提供两种可靠的拆分方法:

方法一:用datetime正确解析后拆分(推荐)

你之前的datetime格式字符串错误,导致解析失败。正确的格式需要匹配完整的日期时间结构,步骤如下:

% 你的示例输入
A = [
    "Monday, January 22, 2024 4:44:22 PM"
    "Monday, January 22, 2024 4:45:01 PM"
    "Monday, January 22, 2024 4:55:52 PM"
    "Monday, January 22, 2024 5:11:22 PM"
];

% 转换为datetime对象,指定正确的输入格式和英文区域设置
dt = datetime(A, 'InputFormat', 'EEEE, MMMM dd, yyyy hh:mm:ss a', 'Locale', 'en_US');

% 拆分日期列和时间列:
% 方式1:保留datetime类型(便于后续日期运算)
date_col = dateshift(dt, 'start', 'day'); % 仅保留日期,时间为00:00:00
time_col = time(dt); % 仅保留时间,日期为0000-00-00

% 方式2:转换为字符串格式(直接对应CSV输出需求)
date_str_col = string(dt, 'EEEE, MMMM dd, yyyy');
time_str_col = string(dt, 'hh:mm:ss a');

格式说明:

  • EEEE:匹配完整星期名称(如Monday)
  • MMMM:匹配完整月份名称(如January)
  • hh:12小时制小时数(对应AM/PM)
  • a:匹配AM/PM标识
  • Locale:指定英文区域,确保月份、星期名称解析正确

方法二:纯字符串正则拆分(无需datetime)

如果不需要日期运算,仅需字符串拆分,可通过正则表达式定位年份后的空格作为分隔点:

% 正则拆分:匹配到年份(四位数字)为止的内容为日期,剩余为时间
split_tokens = regexp(A, '(.*\d{4}) (.*)', 'tokens');
split_result = cell2mat(split_tokens);

date_col = split_result(:, 1); % 日期列字符串
time_col = split_result(:, 2); % 时间列字符串

为什么之前split失败?

直接用split(A, " ")会拆分时间部分的空格(如"4:44:22 PM"中的空格),导致时间被拆分为多段,正则法则能精准定位日期与时间的分隔点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:37:16