i_dow=daynumber(ad_date) end if intmonth=month(ad_date) d_first=date(year(ad_date),month(ad_date),1) do while daynumber(d_first)<>ai_dow d_first=relativedate(d_first,1) loop intcount=0 do while month(d_first)=intmonth intcount=intcount+1 d_first=relativedate(d_first,7) loop return intcount end function public function integer of_countdowinmonth (date ad_date);/*函数功能:获取指定日期所在月份的星期一的天数 返回值:integer 指定日期所在月份的星期一的天数 参数:ad_date date 日期*/ return of_countdowinmonth(ad_date,2) end function public function integer of_countworkdays (datawindow adw_holidays, string as_columnname, date ad_startdate, date ad_enddate);/*函数功能:获取指定日期之间的工作日天数 返回值:工作日天数 参数:adw_holidays datawindow存储指定节假日的数据窗口 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(adw_holidays,as_columnname,ad_startdate,1) ad_enddate=of_skipholidays(adw_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(adw_holidays,as_columnname,ad_startdate,ad_enddate) end if li_return=intdays - intsubstract return li_return end function public function date of_getfirstdayinweek (date ad_date);/*函数功能:获取指定日期所在周的第一天 返回值:date 返回指定日期所在周的第一天 参数:ad_date date 日期 */ date ld_return ld_return=relativedate (ad_date, 1 - daynumber(ad_date)) return ld_return end function public function date of_getlastdayinweek (date ad_date);/*函数功能:获取指定日期所在周的最后一天 返回值:date 返回指定日期所在周的最后一天 参数:ad_date date 日期 */ date ld_return ld_return=relativedate (ad_date, 7 - daynumber(ad_date)) return ld_return end function public function date of_getfirstdayinmonth ();/*函数功能:获取当前日期所在月份的第一天 返回值:date 当前日期所在月份的第一天 参数:date ad_date 日期 */ return date(year(today()),month(today()),1) end function public function date of_getlastdayinmonth ();/*函数功能:获取当前日期所在月份的最后一天 返回值:date 当前日期所在月份的最后一天*/ return date(year(today()),month(today()),integer(28+integer(mid('3'+string(abs(sign(mod(sign(mod(abs(year(today())),4))+sign(mod(abs(year(today())),100))+sign(mod(abs(year(today())),400)),2)) -1))+'3232332323',month(today()),1)))) end function public function date of_getfirstworkday ();/*函数功能:获取当前日期所在月的第一个工作日 返回值:date 返回当前日期所在月的第一个工作日 */ date d_temp d_temp=date(year(today()),month(today()),1) return of_skipholidays(d_temp,1) end function public function date of_getlastworkday ();/*函数功能:获取当前日期所在月的最后一个工作日 返回值:date 返回当前日期所在月的最后一个工作日 */ date d_temp d_temp=of_getlastdayinmonth(today()) return of_skipholidays(d_temp,-1) end function public function date of_getfirstdayinweek ();/*函数功能:获取当前日期所在周的第一天 返回值:date 返回当前日期所在周的第一天 参数:ad_date date 日期 */ date ld_return ld_return=relativedate (today(), 1 - daynumber(today())) return ld_return end function public function date of_getlastdayinweek ();/*函数功能:获取指定日期所在周的最后一天 返回值:date 返回指定日期所在周的最后一天*/ date ld_return ld_return=relativedate (today(), 7 - daynumber(today())) return ld_return end function public function date of_getnextworkday ();/*函数功能:获取当前日期跳过周末的下一个工作日 返回值:date 返回当前的指定日期跳过周末的下一个工作日 */ return of_skipholidays(relativedate (today(),1),1) end function public function date of_getpreviousworkday ();/*函数功能:获取当前日期跳过周末的上一个工作日 返回值:date 返回当前日期跳过周末的上一个工作日 */ return of_skipholidays(relativedate (today(),-1),-1) end function public function integer of_countholidays (datawindow adw_holidays, string as_columnname, date ad_startdate, date ad_enddate);/*函数功能:获取指定日期之间的节假日天数 返回值:节假日天数 参数:adw_holidays datawindow存储指定节假日的数据窗口 as_columnname string 数据窗口中存储节假日的列名 ad_startdate date 开始日期 ad_enddate date 结束日期 */ integer li_return date ld_date ld_date=ad_startdate do while ld_date<=ad_enddate if of_lsweekend(ld_date)=true or adw_holidays.find("string("+as_columnname+",'yyyy-mm-dd')"+"='"+string(ld_date,"yyyy-mm-dd")+"'",1,adw_holidays.rowcount())=0 then li_return++ end if ld_date=relativedate(ld_date,1) loop return li_return end function public function integer of_countholidays (date ad_startdate, date ad_enddate);/*函数功能:获取指定日期之间的节假日天数 返回值:节假日天数 参数:ad_startdate date 开始日期 ad_enddate date 结束日期 */ integer li_return date ld_date ld_date=ad_startdate do while ld_date<=ad_enddate if of_lsweekend(ld_date)=true then li_return++ end if ld_date=relativedate(ld_date,1) loop return li_return end function public function integer of_countholidays (datastore ads_holidays, string as_columnname, date ad_startdate, date ad_enddate);/*函数功能:获取指定日期之间的节假日天数 返回值:节假日天数 参数:ads_holidays datastore存储指定节假日的数据存储对象 as_columnname string 数据窗口中存储节假日的列名 ad_startdate date 开始日期 ad_e