怎么算出相对日期和时间?我的方法太笨,有没有好的?
//*******************************************************************************\//函数名:f_RelativeDataTime(datatime adatetime, long anumber, string akind)
//用 途:计算datatime类型的相对日期时间
//输 入:日期时间、相对数量、单位
//输 出:推算后的日期时间
//开发者:张涛
//邮 件:ferryman@163.net
//主
//*******************************************************************************\
long ll_relativesecond,ll_second
time lt_time
date ld_date
constant long ONEDAYSECOND = 86400 //一天总共 24 * 3600 = 86400 秒
ld_date = date(adatetime)
lt_time = time(adatetime)
choose case akind
case "天"
return datetime(relativedate(ld_date,anumber),lt_time)
case "小时"
ll_relativesecond = anumber * 3600
case "分"
ll_relativesecond = anumber * 60
case "秒"
ll_relativesecond = anumber
end choose
ll_second = hour(lt_time) * 3600 + minute(lt_time) * 60 + second(lt_time)
ld_date = relativedate(ld_date,integer(ll_relativesecond/ONEDAYSECOND))
ll_relativesecond -= integer(ll_relativesecond/ONEDAYSECOND) * ONEDAYSECOND
if (ll_second + ll_relativesecond < 0) then
return datetime(relativedate(ld_date,-1),relativetime(time("00:00:00:000"),ONEDAYSECOND + ll_second + ll_relativesecond))
end if
if (ll_second + ll_relativesecond > ONEDAYSECOND) then
return datetime(relativedate(ld_date,1),relativetime(time("00:00:00:000"),ll_second + ll_relativesecond - ONEDAYSECOND))
end if
return datetime(ld_date,relativetime(lt_time,ll_relativesecond))