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

如何将DD-MMM-YYYY HH:MM:SS.SSS格式转换为Progress DATETIME-TZ?

更简便的Progress ABL日期时间转换方法

嘿,完全理解你不想靠拆分字段这种繁琐办法来转换日期时间格式——确实有更简洁的方式搞定这个需求!下面直接给你一步到位的解决方案:

核心思路

利用Progress ABL的PARSE函数直接解析原始字符串为DATETIME类型,再转换为DATETIME-TZ,最后按需格式化输出。不用手动拆分日、月、年这些字段,代码更简洁易维护。

完整代码示例

DEFINE VARIABLE cInputStr AS CHARACTER NO-UNDO INITIAL "15-Sep-2017 20:51:14.566".
DEFINE VARIABLE dtParsed AS DATETIME NO-UNDO.
DEFINE VARIABLE dttzFinal AS DATETIME-TZ NO-UNDO.

// 1. 解析原始字符串为DATETIME类型
dtParsed = PARSE(cInputStr, "DD-MMM-YYYY HH:MM:SS.SSS").

// 2. 转换为DATETIME-TZ,这里以UTC时区为例,可替换为你需要的时区(比如SESSION:TIMEZONE或"+08:00")
dttzFinal = DATETIME-TZ(dtParsed, TIMEZONE("UTC")).

// 3. 输出为你指定格式的字符串(如果需要的话)
MESSAGE "转换结果:" 
    STRING(dttzFinal, "99/99/9999 HH:MM:SS.SSS+HH:MM")
    VIEW-AS ALERT-BOX INFORMATION.

关键细节说明

  • PARSE函数:直接匹配原始字符串的格式掩码"DD-MMM-YYYY HH:MM:SS.SSS",自动完成字符串到DATETIME的转换,省去手动拆分的麻烦。
  • 时区指定:转换为DATETIME-TZ时必须明确时区,示例中用TIMEZONE("UTC")指定UTC时区,你可以根据业务需求替换:
    • 使用本地时区:SESSION:TIMEZONE
    • 使用具体时区标识:TIMEZONE("EST")或TIMEZONE("+08:00")
  • 格式化输出:如果需要把DATETIME-TZ变量转换成你要的字符串格式,用STRING函数加上掩码"99/99/9999 HH:MM:SS.SSS+HH:MM"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:35:59