【问题标题】:Format Date() in VFP report在 VFP 报告中格式化 Date()
【发布时间】:2018-04-14 20:53:56
【问题描述】:

我使用用 VFP 编写的数据库程序,并且我试图更改该程序生成的报告中的日期格式。 报告中的当前字段是 DATE(),它返回 DD/MM/YYYY 我希望该字段返回 DDMMYY (即没有分隔符,没有世纪和个位数的日期和月份有前导零) 有人可以告诉我应该使用的报告字段表达式来实现这一点吗? 谢谢

【问题讨论】:

    标签: visual-foxpro


    【解决方案1】:

    我通过创建一个过程并将该过程称为 date2(date(), "", 2, 2, 2) 在报告字段中。

    这将打印 150418

    此函数也可以与默认值一起使用,即 date(date()),它将打印 15-Apr-18

    FUNCTION date2(par_date, par_separtor, par_day_digit, par_month_digit, par_year_digit)
        LOCAL date_return, day_t, month_t, year_t
        IF VARTYPE(par_separtor) <> "C"
            par_separtor    = "-"
        ENDIF
        IF VARTYPE(par_year_digit) <> "N"
            par_year_digit  = 2
        ENDIF
        day_t       = IIF(DAY(par_date)<10, '0', "") + allt(str(DAY(par_date)))
        month_t     = PROPER(allt(left(CMONTH(par_date),3)))
        year_t      = right(allt(str(year(par_date))),par_year_digit)
        IF VARTYPE(par_month_digit) = "N"
            month_t = IIF(MONTH(par_date)<10, '0', "") + allt(STR(MONTH(par_date)))
    *       MESSAGEBOX(month)
        ENDIF
    
        date_return = IIF(EMPTY(par_date), "         ",  day_t + par_separtor + month_t + par_separtor + year_t)
        RETURN date_return
    ENDFUNC
    

    【讨论】:

      【解决方案2】:

      如果尚未设置世纪,则在报告之前设置世纪(即使您只能在报告环境或波段代码中访问报告本身,您也可以这样做):

      Set century off
      

      那么表达式就是:

      CHRTRAN(DTOC(DATE()),'/','')  
      

      或者如果您指的是日期字段:

      CHRTRAN(DTOC(myDateField),'/','') 
      

      如果出于任何原因,您不能使用“设置世纪关闭”(并且它是开启的),那么稍微改变一下表达方式:

      Stuff(CHRTRAN(DTOC(myDateField),'/',''),5,2,'')
      

      也许这个更好,并且无论日期/日期时间设置如何都可以工作:

      PADL(DAY(DATE())*10000+MONTH(DATE())*100+YEAR(DATE())%100,6,'0')
      

      (如果是日期字段,则将 date() 替换为字段名称)

      【讨论】:

      • 嗨塞廷。杰出的。最后一个解决方案很有效!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多