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

如何在Delphi中实现MBox日期格式到TDateTime格式的便捷转换?

解析MBox日期字符串为可识别格式(Delphi实现)

在Delphi的标准库中,暂时没有现成的函数可以直接解析MBox文件里这种带星期、时区的日期格式(比如Mon, 03 Jun 2019 15:32:25 +0200)。不过我们可以自己写一个转换函数,把它处理成能被StrToDateTime识别的格式,甚至是Excel等工具兼容的格式。

自定义转换实现

下面是一个实用的转换函数,核心思路是先剔除不需要的星期和时区信息,再把英文月份缩写替换成数字格式:

// 定义月份缩写与数字格式的映射
const months : array[1..12,1..2] of string = (('-01-',' Jan '), ('-02-',' Feb '), ('-03-',' Mar '), 
                                              ('-04-',' Apr '), ('-05-',' May '), ('-06-',' Jun '), 
                                              ('-07-',' Jul '), ('-08-',' Aug '), ('-09-',' Sep '), 
                                              ('-10-',' Oct '), ('-11-',' Nov '), ('-12-',' Dec '));

function ChangeDateFormat(input: String): String;
var i: Integer;
begin
  // 剔除开头的星期部分(比如"Mon, ")
  Delete(input, 1, Pos(',', input) + 1);
  // 剔除末尾的时区部分(比如" +0200")
  Delete(input, Pos('+', input) - 1, Length(input));
  // 替换所有月份缩写为数字格式
  for i := 1 to 12 do
    input := StringReplace(input, months[i,2], months[i,1], [rfReplaceAll, rfIgnoreCase]);
  Result := Trim(input);
end;

使用示例

对于MBox中的日期字符串'Date: Mon, 03 Jun 2019 15:32:25 +0200',调用函数后:

WriteLn(ChangeDateFormat('Date: Mon, 03 Jun 2019 15:32:25 +0200'));

会返回03-06-2019 15:32:25,这个格式不仅可以直接用Delphi的StrToDateTime转换为TDateTime类型,还能被Excel识别并支持排序等操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:27:40