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

如何在Progress ABL中读取DD-MON-YY格式生日并转为DD/MM/YYYY?

解决Progress OpenEdge中非默认日期格式转DD/MM/YYYY的问题

你的核心问题是没区分字符串转日期和日期显示格式的处理逻辑,直接硬编码日期字面量的写法没法适配从文件读取的字符串数据,下面是正确的实现方案:

关键要点

  • 从文件读取的日期是字符串类型,必须先通过指定输入格式将其转换为DATE类型变量
  • INPUT FORMAT用于定义字符串转日期时的解析规则,FORMAT用于控制日期的显示格式

正确代码示例

DEFINE VARIABLE cBirthStr AS CHARACTER NO-UNDO.  // 存储从文件读取的日期字符串
DEFINE VARIABLE dBirthday AS DATE NO-UNDO.

-- 模拟读取文件中的日期值
cBirthStr = "2-Aug-83".
-- 按指定格式解析字符串为DATE类型
dBirthday = DATE(cBirthStr) INPUT FORMAT "DD-MON-YY".
-- 以DD/MM/YYYY格式显示
DISPLAY dBirthday FORMAT "DD/MM/YYYY".

-- 测试另一个日期
cBirthStr = "11-Jun-03".
dBirthday = DATE(cBirthStr) INPUT FORMAT "DD-MON-YY".
DISPLAY dBirthday FORMAT "DD/MM/YYYY".

日期掩码说明

  • DD:两位数字的日期(比如02、11)
  • MON:三位英文月份缩写(不区分大小写,Aug、JUN都能识别)
  • YY:两位年份,Progress会根据系统默认的YEAR OFFSET自动补全世纪(默认规则是:若两位年份大于等于当前年份减50,则归为当前世纪;否则归为上一世纪,比如83→1983,03→2003)

如果你的日期字符串是其他变种(比如月份全拼、分隔符不同),只需要调整INPUT FORMAT的掩码即可,比如月份全拼用DD-MMMM-YY,分隔符是点的话用DD.MON.YY。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:14:52