关于日期天数计算的几个函数!

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

关于日期天数计算的几个函数!

今天早上突然要用到一个计算某月有多少天的函数,翻了半天没找到系统自带着中函数,于是动手写了一个,如下:

**返回某个月有多少天

FUNCTION HowMonthDay()

PARAMETERS cDate

LOCAL Days as Integer ,Years as Integer

IF !TYPE("cDate")=="D"

MESSAGEBOX("参数类型不正确,应该为日期型","系统提示!")

RETURN

ENDIF

Days=IIF(INLIST(MONTH(cDate),1,3,5,7,8,10,12),31,30)

**闰年计算方法

Years=YEAR(cDate)

IF MONTH(cDate)==2

Days = IIF(Years%400==0 OR (Years%4==0 AND Years%100<>0),29,28)

ENDIF

RETURN Days

ENDFUNC

后来郑宇大哥给我提供了一个返回月底的函数。如下:

PROCEDURE EDOM

* FUNCTION: 返回本月月底

* M.L.Y 1998.8.8

PARAMETERS DATE_TODAY

PRIVATE ALL

SET DATE TO ANSI

SET CENTURY ON

IF MONTH(DATE_TODAY) < 12

RETURN CTOD(STR(YEAR(DATE_TODAY),4,0) + "." ;

+ STR(MONTH(DATE_TODAY)+1,2,0) + ".01") - 1

ELSE

RETURN EDOY(DATE_TODAY)

ENDIF

思量了半天发现返回月底可能还要简单一点,我改进了一下:

cDate=Date()

??cDate+(32-DAY(cDate))-DAY(cDate+(32-DAY(cDate)))

最后用这个思路改进了一下返回某月有多少天的函数,如下:

FUNCTION HowMonthDay()

PARAMETERS cDate

LOCAL Days as Integer

IF !TYPE("cDate")=="D"

MESSAGEBOX("参数类型不正确,应该为日期型","系统提示!")

RETURN

ENDIF

Days=DAY(cDate+(32-DAY(cDate))-DAY(cDate+(32-DAY(cDate))))

RETURN Days

ENDFUNC

其实最重要的只有一句:Days=DAY(cDate+(32-DAY(cDate))-DAY(cDate+(32-DAY(cDate))))

也不用管闰年平年了,省事。

要是返回月底,那这句改为:cDate+(32-DAY(cDate))-DAY(cDate+(32-DAY(cDate))) 即可

原理就是根据增加值来计算当月的下一个月超出几天,然后减去几天就是当月的最后一天了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航