1 /* 2 函数名称:wf_DateAdd 3 函数作用:根据指定的类型,计算相应一段时间后的新日期 4 函数参数: 5 string ls_type 指定的方式 6 'year','yy','yyyy' //年份方式 7 'month','mm','m' //月份方式 8 case 'day','dd','d' //天数方式 9 'week','wk','ww' //周数方式 10 'quarter','qq','q' //季度方式 11 date ld_qsrq 起始日期 12 integer li_sj 指定的时间段 13 函数返回值: 14 date 15 ld_NewDate 新日期 16 */ 17 18 date ld_NewDate 19 int li 20 string ls 21 22 if li_sj = 0 then return ld_qsrq 23 24 choose case lower(ls_type) 25 case 'year','yy','yyyy' //年份 26 li = year(ld_qsrq) + li_sj 27 if li < 1900 or li > 3000 then return 1900-01-01 28 ls = string(li) + string(ld_qsrq, '-mm-dd') 29 case 'quarter','qq','q' //季度 30 li = month(ld_qsrq) + 3 * li_sj 31 ls = string(year(ld_qsrq) + int((li -1) / 12)) + string(mod(li, 12) - 6 * (sign(li) - 1), '-00') + string(ld_qsrq, '-dd') 32 case 'month','mm','m' //月份 33 li = month(ld_qsrq) + li_sj 34 ls = string(year(ld_qsrq) + int((li -1) / 12)) + string(mod(li, 12) - 6 * (sign(li) - 1), '-00') + string(ld_qsrq, '-dd') 35 case 'day','dd','d' //天数 36 return RelativeDate ( ld_qsrq, li_sj ) 37 case 'week','wk','ww' //周数 38 return RelativeDate ( ld_qsrq, li_sj * 7 ) 39 case else 40 return ld_qsrq 41 end choose 42 43 if ls = '1900-01-01' then return 1900-01-01 44 ld_NewDate = date(ls) 45 if ld_NewDate = 1900-01-01 then ld_NewDate = wf_dateadd('dd', wf_dateadd('mm', date(left(ls, 8) + '01'), 1), -1) 46 47 return ld_NewDate
调用方式
1 date ld_qsrq 2 date ld_NewDate 3 integer li_sj 4 5 ld_qsrq = date(sle_qsrq.text) //起始日期 6 li_sj = long(sle_sj.text) //时间段 7 //天数方式 8 sle_day.text = string(wf_DateAdd("day",ld_qsrq,li_sj),'yyyy-mm-dd') 9 //月份方式 10 sle_month.text = string(wf_DateAdd("month",ld_qsrq,li_sj),'yyyy-mm-dd') 11 //年份方式 12 sle_year.text = string(wf_DateAdd("year",ld_qsrq,li_sj),'yyyy-mm-dd') 13 //季度方式 14 sle_quarter.text = string(wf_DateAdd("quarter",ld_qsrq,li_sj),'yyyy-mm-dd') 15 //周方式 16 sle_week.text = string(wf_DateAdd("week",ld_qsrq,li_sj),'yyyy-mm-dd')