如何得到两个datetime数值间的小时和分钟数(pb实现)
假设:2005-05-05 12:25:35 和 2005-05-06 3:26:35间隔了多少个小时多少分钟?
因为要在数据窗口中实现自动计算并添加时间差值,所以不能用sql语句实现。
问题点数:50、回复次数:7Top
1 楼sywen(古道西风)回复于 2005-04-04 13:24:15 得分 0
SecondsAfter ( time1, time2 )
或者用數據庫提供的相應的sql函數!Top
2 楼946(情系会计)回复于 2005-04-04 13:26:22 得分 0
global type of_relativedatetime from function_object
end type
forward prototypes
global function datetime of_relativedatetime (datetime adt_start, decimal adc_hour)
end prototypes
global function datetime of_relativedatetime (datetime adt_start, decimal adc_hour);datetime ldt_ret
long ll_second_add, ll_second, ll_minute, ll_hour, ll_total_sec, ll_date_add, ll_mid1, ll_mid2
time lt_time
date ld_date
ll_second_add = long(adc_hour * 3600)
lt_time = time(adt_start)
ld_date = date(adt_start)
ll_second = second(lt_time)
ll_minute = minute(lt_time)
ll_hour = hour(lt_time)
ll_total_sec = ll_hour * 3600 + ll_minute * 60 + ll_second + ll_second_add
ll_date_add = long(ll_total_sec / (24*3600))
ll_mid1 = mod(ll_total_sec, 24 * 3600)
ll_hour = long( ll_mid1 / 3600)
ll_mid2 = mod(ll_mid1, 3600)
ll_minute = long(ll_mid2 / 60)
ll_second = mod(ll_mid2,60)
lt_time = time(string(ll_hour,'00#') + ":" + &
string(ll_minute,"00#") + ":" + &
string(ll_second,"00#"))
ld_date = relativedate(ld_date, ll_date_add)
ldt_ret = datetime(ld_date, lt_time)
return ldt_ret
end function
Top
3 楼lzheng2001(1加1)回复于 2005-04-04 13:31:49 得分 20
pb中会要把datetime拆分成两份进行运算
date d_1
time t_1
d_1 = date(dt)
t_1 = time(t_1)
//以上拆分成两部分保存在两个变量中
DaysAfter()求两个日期间的日数差
SecondsAfter求两个时间的秒数差
总秒数差 = 日数 * 3600 * 24 + 秒数差
然后你就可以转成分钟了
Top
4 楼nimittz(尼米兹---------努力升星GOGOGO)回复于 2005-04-04 13:34:37 得分 30
没有直接的pb函数,你必须自己写,用DaysAfter 和 SecondsAfter合起来写 daysafter(date(a1),date(a2))*86400 + SecondsAfter ( time(a1), time(a2) ),a1 a2就是你要求差的两个datetime型变量
Top
5 楼lzheng2001(1加1)回复于 2005-04-04 13:34:42 得分 0
改一下
t_1 = time(dt)
Top
6 楼hornbilltofy()回复于 2005-04-04 13:49:33 得分 0
用pb来实现有点麻烦,实际上完全可以通过sql语句来轻松实现,并且也可以在数据窗中使用,方法是你利用sql去编一个function,然后在数据窗中直接调用这个function就可以啦!Top
7 楼yhmodem(潇洒的瓢儿白)回复于 2005-04-04 20:49:29 得分 0
我剛好在寫一個刷卡考勤模塊.就有這樣的問題.如果你只要求到分鍾的話.大可不必記算到秒.只需要
首先判斷兩個日期是不是當天.如果不是就將第二天的時間加上2400.
然後你就可以用第二天的時間減去第一天的時間就可以算出相差多少小時多少分鍾了.Top




