一个自己封装的日期时间操作的用户对象[5]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 fengyepiaoling 的 blog

nddate date 结束日期 */ integer li_return date ld_date ld_date=ad_startdate do while ld_date<=ad_enddate if of_lsweekend(ld_date)=true or ads_holidays.find("string("+as_columnname+",'yyyy-mm-dd')"+"='"+string(ld_date,"yyyy-mm-dd")+"'",1,ads_holidays.rowcount())=0 then li_return++ end if ld_date=relativedate(ld_date,1) loop return li_return end function public function integer of_countworkdays (datastore ads_holidays, string as_columnname, date ad_startdate, date ad_enddate);/*函数功能:获取指定日期之间的工作日天数 返回值:工作日天数 参数:ads_holidays datastroe存储指定节假日的数据存储对象 as_columnname string 数据窗口中存储节假日的列名 ad_startdate date 开始日期 ad_enddate date 结束日期 */ integer intdays,li_return date d_temp integer intsubstract if ad_enddate<ad_startdate then d_temp=ad_startdate ad_enddate=ad_startdate ad_startdate=d_temp end if ad_startdate=of_skipholidays(ads_holidays,as_columnname,ad_startdate,1) ad_enddate=of_skipholidays(ads_holidays,as_columnname,ad_enddate,-1) if ad_startdate>ad_enddate then li_return=0 else intdays=daysafter (ad_startdate, ad_enddate )+1 intsubstract=intsubstract+of_countholidays(ads_holidays,as_columnname,ad_startdate,ad_enddate) end if li_return=intdays - intsubstract return li_return end function public function integer of_countworkdays (date ad_startdate, date ad_enddate);/*函数功能:获取指定日期之间的工作日天数 返回值:工作日天数 参数:ad_startdate date 开始日期 ad_enddate date 结束日期 */ integer intdays,li_return date d_temp integer intsubstract if ad_enddate<ad_startdate then d_temp=ad_startdate ad_enddate=ad_startdate ad_startdate=d_temp end if ad_startdate=of_skipholidays(ad_startdate,1) ad_enddate=of_skipholidays(ad_enddate,-1) if ad_startdate>ad_enddate then li_return=0 else intdays=daysafter (ad_startdate, ad_enddate )+1 intsubstract=intsubstract+of_countholidays(ad_startdate,ad_enddate) end if li_return=intdays - intsubstract return li_return end function public function integer of_getage (date ad_brithday, date ad_date);/*函数作用:获取指定生日到指定日期的年纪 函数返回值:integer 指定生日到指定日期的年纪 参数:date ad_brithday 出生日期 date ad_date 指定日期*/ integer li_age date ld_temp if ad_brithday>ad_date then ld_temp=ad_brithday ad_brithday=ad_date ad_date=ld_temp end if li_age=of_yearsafter(ad_brithday,ad_date) if ad_date<date(year(ad_date),month(ad_brithday),day(ad_brithday)) then li_age=li_age - 1 end if return li_age end function public function long of_yearsafter (date ad_start, date ad_end);/*函数用途:获取指定日期之间的相差年度 返回值:long 相差年度 参数:date ad_start 开始日期 date ad_end 结束日期*/ date ld_temp int li_year, li_mult double adb_start, adb_end if isnull(ad_start) or isnull(ad_end) then long ll_null setnull (ll_null) return ll_null end if if ad_start > ad_end then ld_temp = ad_start ad_start = ad_end ad_end = ld_temp li_mult = -1 else li_mult = 1 end if li_year = year(ad_end) - year(ad_start) adb_start = month(ad_start) adb_start = adb_start + day(ad_start) / 100 adb_end = month(ad_end) adb_end = adb_end + day(ad_end) / 100 if adb_start > adb_end then li_year -- end if return li_year * li_mult end function public function long of_monthsafter (date ad_start, date ad_end);/* 描述: 两个日期之间的月份间隔 返回: 两个日期之间的月份间隔 参数:date ad_start 开始日期 date ad_end 结束日期 */ date ld_temp integer li_month integer li_mult if isnull(ad_start) or isnull(ad_end) then long ll_null setnull(ll_null) return ll_null end if if ad_start > ad_end then ld_temp = ad_start ad_start = ad_end ad_end = ld_temp li_mult = -1 else li_mult = 1 end if li_month = (year(ad_end) - year(ad_start) ) * 12 li_month = li_month + month(ad_end) - month(ad_start) if day(ad_start) > day(ad_end) then li_month -- end if return li_month * li_mult end function public function long of_weeksafter (date ad_start, date ad_end);/*函数用途:获取指定日期之间的相差星期数 返回值:long 相差星期数 参数:date ad_start 开始日期 date ad_end 结束日期*/ if isnull(ad_start) or isnull(ad_end) then long ll_null setnull(ll_null) return ll_null end if return daysafter(ad_start,ad_end) /7 end function public function long of_secondsafter (datetime adtm_start, datetime adtm_end);/*函数用途:获取指定日期之间的相差分钟数 返回值:long 相差分钟数 参数:datetime adtm_start 开始时间 datetime adtm_end 结束时间*/ long ll_total_seconds, ll_day_adjust date ld_sdate, ld_edate time lt_stime, lt_etime if isnull(adtm_start) or isnull(adtm_end) then long ll_null setnull(ll_null) return ll_null end if ld_sdate = date(adtm_start) ld_edate = date(adtm_end) lt_stime = time(adtm_start) lt_etime = time(adtm_end) if ld_sdate = ld_edate then ll_total_seconds = secondsafter( lt_stime,lt_etime) elseif ld_sdate < ld_edate then ll_total_seconds = secondsafter(lt_stime,time('23:59:59')) ll_day_adjust = daysafter(ld_sdate,ld_edate) -1 if ll_day_adjust > 0 then ll_total_seconds = ll_total_seconds + 86400 * ll_day_adjust ll_total_seconds = ll_

本文关键:一个自己封装的日期时间操作的用户对象
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top