关于日期的格式
日期显示有年月日,但是我想去掉年,仅显示月日,怎么搞啊,有没有简单的函数啊,查了下书,好像没有简单的函数啊比如:2015-1-5,显示是1月5日。
CLEAR dd1 = CREATEOBJECT("MyDate", 2015, 1, 5) && 用指定日期创建一个类型为myData的实例对象 dd2 = CREATEOBJECT("MyDate", NULL, NULL, NULL) && 用默认日期创建一个类型为myData的实例对象 dd1.FormatMask = "YYYY-M-DD" ? dd1.ToString() dd1.FormatMask = "YYYY年MM月DD日" ? dd1.ToString() dd1.FormatMask = "YY年MM月DD日" ? dd1.ToString() dd1.FormatMask = "YY/MM-DD" ? dd1.ToString() ? dd2.ToString() RELEASE ALL LIKE dd* && 如果dd不是局部变量则应手动从内存中释放 RETURN * 自定义日期类 DEFINE CLASS MyDate AS Custom * 年、月、日属性,任何一个为零,均返回"无效日期" Year = 0 Month = 0 Day = 0 * 输出格式掩码属性 * YYYY: 年份格式,可为4位YYYY或2位YY * MM: 月份,2位时自动在左边补零,1位时不补零 * DD: 日,2位时自动在左边补零,1位时不补零 * 年月日之间的分隔字符(串)可任意 FormatMask = "YYYY-MM-DD" && 默认格式 * 用指定年、月、日初始化对象,若任一参数为NULL,则取当前系统日期对应值 PROCEDURE Init(tnYear, tnMonth, tnDay) IF ISNULL(tnYear) tnYear = YEAR(DATE()) ENDIF IF ISNULL(tnMonth) tnMonth = MONTH(DATE()) ENDIF IF ISNULL(tnDay) tnDay = DAY(DATE()) ENDIF WITH This IF .CheckValidity(tnYear, tnMonth, tnDay) .Year = tnYear .Month = tnMonth .Day = tnDay ENDIF ENDWITH ENDPROC * 检查日期的合法性 HIDDEN FUNCTION CheckValidity(tnYear, tnMonth, tnDay) LOCAL lcCentury, lcDate, llValid lcCentury = SET("Century") lcDate = SET("Date") SET DATE TO ANSI SET CENTURY ON llValid = !EMPTY(CTOD(TRANSFORM(tnYear) + "." + TRANSFORM(tnMonth) + "." + TRANSFORM(tnDay))) SET CENTURY &lcCentury SET DATE TO &lcDate RETURN llValid ENDFUNC * 把日期转换为字符串 FUNCTION ToString WITH This RETURN IIF(!EMPTY(.Year * .Month * .Day), .SetYear(.SetMonth(.SetDay(.FormatMask))), "无效日期") ENDWITH ENDFUNC *-- 以下为类的隐藏方法 ---* * 设置年份 HIDDEN FUNCTION SetYear(tcMask) LOCAL lnLength, lnPos, lcYear lnLength = OCCURS("Y", tcMask) lnPos = AT("Y", tcMask) lcYear = RIGHT(TRANSFORM(This.Year), lnLength) RETURN STRTRAN(tcMask, REPLICATE("Y", lnLength), lcYear) ENDFUNC * 设置月份 HIDDEN FUNCTION SetMonth(tcMask) LOCAL lnLength, lnPos, lcMonth lnLength = OCCURS("M", tcMask) lnPos = AT("M", tcMask) lcMonth = IIF(lnLength > 1, PADL(This.Month, lnLength, "0"), TRANSFORM(This.Month)) RETURN STRTRAN(tcMask, REPLICATE("M", lnLength), lcMonth) ENDFUNC * 设置日 HIDDEN FUNCTION SetDay(tcMask) LOCAL lnLength, lnPos, lcDay lnLength = OCCURS("D", tcMask) lnPos = AT("D", tcMask) lcDay = IIF(lnLength > 1, PADL(This.Day, lnLength, "0"), TRANSFORM(This.Day)) RETURN STRTRAN(tcMask, REPLICATE("D", lnLength), lcDay) ENDFUNC ENDDEFINE