如何根据变量初始值更改日期格式?

How to change date format based on variable initial value?

我使用下面的程序根据变量 (cDataFormat) 中的值设置更改日期格式。但问题是这可以由用户更改,程序应该相应地采取行动

DEFINE VARIABLE cDate           AS DATE      NO-UNDO.
DEFINE VARIABLE clogindate      AS CHARACTER NO-UNDO.
DEFINE VARIABLE cDateformat     AS CHARACTER NO-UNDO INIT "YYYY/MM/DD". /*this can be changed by 
user*/

cDate = DATE(11/27/2020).

IF cDateformat      = "YYYY/MM/DD" THEN clogindate = string(year(cDate),"9999") + 
                               string(month(cDate),"99") + string(day(cDate),"99").
ELSE IF cDateformat = "YY/MM/DD" THEN clogindate = string(year(cDate),"99") + 
                               string(month(cDate),"99") + string(day(cDate),"99").
ELSE IF cDateformat = "MM/DD/YY" THEN clogindate = string(month(cDate),"99") + 
                               string(day(cDate),"99") +  string(year(cDate),"9999").

/* AND SO ON...... as you know writing so much lines not the smartest way..Please give any idea*/

DISP clogindate.

不使用 IF THEN ELSE IF ELSE IF,而是使用 CASE 语句。可读性更好。

当您只有模式 MMDDYYYYYY 时,您可以使用 REPLACE 语句来减少代码行.

clogindate = cDateformat.
clogindate = REPLACE(clogindate, "YYYY", STRING(YEAR(cDate), "9999")).
clogindate = REPLACE(clogindate, "YY", STRING(YEAR(cDate), "99")).
clogindate = REPLACE(clogindate, "MM", STRING(MONTH(cDate), "99")).
clogindate = REPLACE(clogindate, "DD", STRING(DAY(cDate), "99")).