当前位置:编程学习 > Foxpro >>

用FOXPRO编写,统计输入的两个日期时间差,并可以算出一个月中所有统计时间差的总小时数

用FOXPRO编写,统计输入的两个日期时间差,并可以算出一个月中所有统计时间差的总小时数---如果可用,会再增加悬赏150分
补充:完成部分功能也可以
追问:就是输入开始时间,输入一个开始时间输入一个结束时间,也是年月日,比如2011-05-12 8:00 结束时间2011-05-13 5:05,要能够算出两者之间经历了多长时间假若为Li(i=1,2,3,...)【一次开始时间对应着一次结束时间】。以此类推,最后能够算出一个月中所有经历时间之和,就是L1+L2+L3...,比如算出2011-5一个月中所有输入时间差的和只要foxpro的,谢谢你我也会C的,可惜需要的是FOXPRO
答案:*-
*-应用示例:
*-rundate({^2011-09-3 12:00},DATETIME(),'A')
*-
FUNCTION rundate()
LPARAMETERS cindate1,cindate2,timebz
LOCAL d1,d2,dmin,dhour,dday,dsec,returnvalue
LOCAL dayhour,daymin,daysec,totalday
IF PARAMETERS()<2 OR  ;
 VARTYPE(cindate1)#'T' OR ;
 VARTYPE(cindate2)#'T'
WAIT '参数为2个日期时间型' WINDOW AT  SROWS()/2,SCOLS()/2 NOCLEAR TIMEOUT 2
WAIT CLEAR
returnvalue='参数错误' 
RETURN returnvalue
ENDIF 
d1=MIN(cindate1,cindate2)
d2=MAX(cindate1,cindate2)
dsec=d2-d1         &&总间隔的秒数
daysec=MOD(dsec,60)        &&秒
dmin=dsec/60            &&总间隔的分数
daymin=INT(d2-d1)/60          &&分
dhour=dsec/3600       &&总间隔的时数
dayhour=INT((d2-d1)/3600)     &&时
totalday=dsec/(3600*24)    &&总天数
dday=INT(dsec/(3600*24)) &&天
DO CASE 
CASE UPPER(timebz)='D' OR UPPER(timebz)='DAY'
returnvalue=TRANSFORM(totalday)+'天'
CASE UPPER(timebz)='H' OR UPPER(timebz)='HOUR'
returnvalue=TRANSFORM(dhour)+'小时'
CASE UPPER(timebz)='M' OR UPPER(timebz)='MINUTE'
returnvalue=TRANSFORM(dmin)+'分钟'
CASE UPPER(timebz)='S' OR UPPER(timebz)='SECONDS'
returnvalue=TRANSFORM(dsec)+'秒'
CASE UPPER(timebz)='A' OR UPPER(timebz)='ALL'
returnvalue=TRANSFORM(dday)+'天'+;
			TRANSFORM(MOD(dday,24))+'时'+;
			TRANSFORM(INT(MOD(daymin,60)))+ '分'+;
			TRANSFORM(daysec)+ '秒'
ENDCASE 
RETURN returnvalue
ENDFUNC
其他:不太明白,举个例子说明一下 java编写的要吗? 如果是个实际工作的问题,可以用Excel帮助你统计(很类似考勤系统统计加班工时的样子);

如果是个学校的课题可能帮不了lz,FoxPro语法不熟悉;

上一个:Visual FoxPro程序设计与应用对未来的工作有很大帮助吗???我以为没用。请有经验的高手指导我。谢谢
下一个:急求!谢谢Visual foxpro 6.0软件,大家帮帮忙,发个给我吧。嘻嘻,谢谢啦!

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,