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

作者:网络 来源:佚名 更新时间:2008-02-09 01:18:15 点击:
关于日期天数计算的几个函数!
今天早上突然要用到一个计算某月有多少天的函数,翻了半天没找到系统自带着中函数,于是动手写了一个,如下:

**返回某个月有多少天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 daysendfunc  

后来郑宇大哥给我提供了一个返回月底的函数。如下:
procedure edom* function: 返回本月月底* m.l.y 1998.8.8parameters date_todayprivate allset date to ansiset century onif month(date_today) < 12    return ctod(str(year(date_today),4,0) + "." ;              + str(month(date_today)+1,2,0) + ".01") - 1else    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 daysendfunc  

其实最重要的只有一句:days=day(cdate+(32-day(cdate))-day(cdate+(32-day(cdate))))也不用管闰年平年了,省事。

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

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