如何修改VFP报表中DATE()函数的日期格式为DDMMYY?
在VFP报表中实现DDMMYY格式日期的表达式
嘿,在Visual FoxPro里要把报表日期从默认的DD/MM/YYYY改成无分隔符、单数字日/月带前导零的DDMMYY格式,有两种靠谱的写法,我给你拆解清楚:
方法1:拆分日期组件拼接(推荐,不受系统设置影响)
直接提取日、月、年的各个部分,补上前导零后拼接,这种方式完全不依赖系统的SET DATE设置,输出格式绝对稳定,后期维护也直观:
PADL(DAY(DATE()), 2, '0') + PADL(MONTH(DATE()), 2, '0') + RIGHT(STR(YEAR(DATE())), 2)
各部分逻辑:
DAY(DATE()):获取当前日期的日数值(范围1-31)PADL(..., 2, '0'):把日/月的数值转为两位长度的字符串,单数字前面自动补0(比如输入5会输出05)MONTH(DATE()):获取当前日期的月数值(范围1-12)RIGHT(STR(YEAR(DATE())), 2):先把四位年份转成字符串,再截取最后两位,得到不带世纪的年份(比如2024会变成24)
方法2:利用固定格式的日期字符串截取
VFP的DTOC()函数带参数1时,会返回固定的YYYYMMDD格式字符串(不管系统日期怎么设置),我们可以通过截取子串来凑出DDMMYY:
SUBSTR(DTOC(DATE(), 1), 7, 2) + SUBSTR(DTOC(DATE(), 1), 5, 2) + SUBSTR(DTOC(DATE(), 1), 3, 2)
各部分逻辑:
DTOC(DATE(), 1):返回类似20240520的固定格式字符串SUBSTR(...,7,2):截取第7-8位,得到日部分(比如20)SUBSTR(...,5,2):截取第5-6位,得到月部分(比如05)SUBSTR(...,3,2):截取第3-4位,得到年份的后两位(比如24)
两种方法都能实现你要的效果,个人更推荐第一种,逻辑清晰,别人看代码也能一眼懂。
内容的提问来源于stack exchange,提问作者Mike J
相关产品推荐
相关产品推荐

