ll_year = ll_year + al_number / 12
else
ll_year = ll_year + al_number / 12 + 1
end if
end if
ll_month = ll_month + mod(al_number,12)
if ll_month > 12 then
ll_year = ll_year + 1
ll_month = ll_month - 12
elseif ll_month = 0 then
ll_year = ll_year - 1
ll_month = 12
end if
if not isdate(string(ll_year) + "-" + string(ll_month) + "-" + string(ll_day)) then
do while isdate(string(ll_year) + "-" + string(ll_month) + "-" + string(ll_day))
ll_day --
loop
end if
ld_return = date(string(ll_year) + "-" + string(ll_month) + "-" + string(ll_day))
lt_return = time(string(ll_hour,'00')+":"+string(ll_minute,'00')+":"+string(ll_second,'00')+"."+string(ll_millisecond,'000'))
case "day","dd","d","日"//日
ld_return = relativedate (date(adt_refdate),al_number)
lt_return = time(string(ll_hour,'00')+":"+string(ll_minute,'00')+":"+string(ll_second,'00')+"."+string(ll_millisecond,'000'))
case "week","wk","ww","星期","周"//周
return f_dateadd('day',al_number * 7,adt_refdate)
case "hour","hh","h","小时"//小时
ld_return = relativedate (date(adt_refdate),truncate((al_number + ll_hour) / 24,0))
if al_number > 0 then
ll_hour = mod(al_number + ll_hour,24)
else
ll_hour = 24 - mod(abs(al_number + ll_hour),24)
ld_return = relativedate (ld_return,-1)
end if
lt_return = time(string(ll_hour,'00')+":"+string(ll_minute,'00')+":"+string(ll_second,'00')+"."+string(ll_millisecond,'000'))
case "minute","mi","n","分"//分钟
if ll_hour * 60 + ll_minute + al_number < 0 then
ll_day_tmp = ceiling(abs(ll_hour * 60 + ll_minute + al_number) / 60 / 24) * (-1)
else
ll_day_tmp = (ll_hour * 60 + ll_minute + al_number) / 60 / 24
end if
ld_return = relativedate (date(adt_refdate),ll_day_tmp)
ll_hour_tmp = (ll_hour * 60 + ll_minute + al_number - ll_day_tmp * 24 * 60) / 60
ll_minute = ((ll_hour * 60 + ll_minute + al_number - ll_day_tmp * 24 * 60) / 60 - ll_hour_tmp) * 60
ll_hour = ll_hour_tmp
lt_return = time(string(ll_hour,'00')+":"+string(ll_minute,'00')+":"+string(ll_second,'00')+"."+string(ll_millisecond,'000'))
case "second","ss","s","秒"//秒
if ll_hour * 60 * 60 + ll_minute * 60 + ll_second + al_number < 0 then
ll_day_tmp = ceiling(abs(ll_hour * 60 * 60 + ll_minute * 60 + ll_second + al_number) / 60 / 60 / 24) * (-1)
else
ll_day_tmp = (ll_hour * 60 * 60 + ll_minute * 60 + ll_second + al_number) / 60 / 60 / 24
end if
ld_return = relativedate (date(adt_refdate),ll_day_tmp)
ll_hour_tmp = (ll_hour * 60 * 60 + ll_minute * 60 + ll_second + al_number - ll_day_tmp * 24 * 60 * 60) / 60 / 60
ll_minute_tmp = (ll_hour * 60 * 60 + ll_minute * 60 + ll_second + al_number - ll_day_tmp * 24 * 60 * 60 - ll_hour_tmp * 60 * 60) / 60
ll_second = ll_hour * 60 * 60 + ll_minute * 60 + ll_second + al_number - ll_day_tmp * 24 * 60 * 60 - ll_hour_tmp * 60 * 60 - ll_minute_tmp * 60
ll_hour = ll_hour_tmp
ll_minute = ll_minute_tmp
lt_return = time(string(ll_hour,'00')+":"+string(ll_minute,'00')+":"+string(ll_second,'00')+"."+string( |