网上收藏的
/*
函数名称:wf_DateAdd
函数作用:根据指定的类型,计算相应一段时间后的新日期
函数参数:
string ls_type 指定的方式
'year','yy','yyyy' //年份方式
'month','mm','m' //月份方式
case 'day','dd','d' //天数方式
'week','wk','ww' //周数方式
'quarter','qq','q' //季度方式
date ld_qsrq 起始日期
integer li_sj 指定的时间段
函数返回值:
date
ld_NewDate 新日期
*/
date ld_NewDate
int li
string ls
if li_sj = 0 then return ld_qsrq
choose case lower(ls_type)
case 'year','yy','yyyy' //年份
li = year(ld_qsrq) + li_sj
if li < 1900 or li > 3000 then return 1900-01-01
ls = string(li) + string(ld_qsrq, '-mm-dd')
case 'quarter','qq','q' //季度
li = month(ld_qsrq) + 3 * li_sj
ls = string(year(ld_qsrq) + int((li -1) / 12)) + string(mod(li, 12) - 6 * (sign(li) - 1), '-00') + string(ld_qsrq, '-dd')
case 'month','mm','m' //月份
li = month(ld_qsrq) + li_sj
ls = string(year(ld_qsrq) + int((li -1) / 12)) + string(mod(li, 12) - 6 * (sign(li) - 1), '-00') + string(ld_qsrq, '-dd')
case 'day','dd','d' //天数
return RelativeDate ( ld_qsrq, li_sj )
case 'week','wk','ww' //周数
return RelativeDate ( ld_qsrq, li_sj * 7 )
case else
return ld_qsrq
end choose
if ls = '1900-01-01' then return 1900-01-01
ld_NewDate = date(ls)
if ld_NewDate = 1900-01-01 then ld_NewDate = wf_dateadd('dd', wf_dateadd('mm', date(left(ls, 8) + '01'), 1), -1)
return ld_NewDate
调用方式
date ld_qsrq
date ld_NewDate
integer li_sj
ld_qsrq = date(sle_qsrq.text) //起始日期
li_sj = long(sle_sj.text) //时间段
//天数方式
sle_day.text = string(wf_DateAdd("day",ld_qsrq,li_sj),'yyyy-mm-dd')
//月份方式
sle_month.text = string(wf_DateAdd("month",ld_qsrq,li_sj),'yyyy-mm-dd')
//年份方式
sle_year.text = string(wf_DateAdd("year",ld_qsrq,li_sj),'yyyy-mm-dd')
//季度方式
sle_quarter.text = string(wf_DateAdd("quarter",ld_qsrq,li_sj),'yyyy-mm-dd')
//周方式
sle_week.text = string(wf_DateAdd("week",ld_qsrq,li_sj),'yyyy-mm-dd')
计算结果