按指定的方式,指定的时间段,得到新日期

网上收藏的

/*
函数名称: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')

 

计算结果

按指定的方式,指定的时间段,得到新日期_第1张图片

你可能感兴趣的:(Date,String,qq)