【问题标题】:How to change date format based on variable initial value?如何根据变量初始值更改日期格式?
【发布时间】:2020-11-27 04:50:40
【问题描述】:

我使用下面的程序根据变量(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.

【问题讨论】:

  • 您使用的是哪个 OpenEdge 版本?

标签: openedge progress-4gl


【解决方案1】:

不要使用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")).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多