关于去时间差的问题

发布于 2022-09-04 12:28:16 字数 659 浏览 8 评论 9

小弟今天想了下怎么去取当一个程序从运行开始,到用户要求停下,此时程序运行了多久的问题(不计算天数,只要求具体的秒数)?
    我的想法是,先time出程序开始运行时的时间,把它move到一个变量X(先)里去.然后当用户要求停下(比如触发了某个指示器) ,再取此时的系统时间Y(后),现在要计算Y-X的具体秒数?
    先用EXTRCT取出X(先)和Y(后)各自的hour,minute,以及second.
      比较X(先)和Y(后)的hour,如果Y的hour小于X的hour<(X--23:59:57)、(Y--00:00:32)>,将Y的hour+24,然后减去X的hour计算出时差;现在比较Y和X的minute,如果Y的minute小于X的minute,先将时差-1,然后Y得minute+60减去X的minute计算出分差;最后比较Y的second和X的second,如果Y的
second小于X的second,将分差-1,Y的second+60减去X的second,计算出秒差,最后time_total=(时差*60+分差)*60+秒差计算出X和Y的时间差?
(当然,当X得hour、minute、second大于Y的时,可以直接想减,以为不需要计算天数.)总觉得这个方法太死了.各位大侠,有什么好方法直接取出他们的时间差啊.帮帮忙.谢谢!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

葮薆情 2022-09-09 13:37:37

看来SUBDUR比DIFF稳定啊,不明缘由啊,谁能给个解释啊?
07.01,DIFF运行是个正数与SBUDUR时等价的。
今天运行一下,DIFF结果是个负数,SUBDUR正常。

负佳期 2022-09-09 13:37:26

C                  EVAL      TEMPFIELD=%DIFF(BASEDATE:WORKDATE:*DAYS)
得到的结果竟然是负数,厉害啊!

看轻我的陪伴 2022-09-09 13:35:22

最近在取时间的问题上发现了个问题:
请问一下的2句代码有什么不同?
BASEDATE:1901-01-01.
WORKDATE ---> 当天的日期。
C     WORKDATE      SUBDUR    BASEDATE      TEMPFIELD:*D              
C                  EVAL      TEMPFIELD=%DIFF(BASEDATE:WORKDATE:*DAYS)
刚开始在07.01测试的时候没问题,2句代码好像等价,今天去测试一下,竟然出了问题!!!莫名其妙!
高手帮帮忙,哪里不对?

北城半夏 2022-09-09 13:28:54

Thanks.

删除会话 2022-09-09 13:28:35

回复 5# first_come

不用说隔天了,隔几十年都可以。

可遇━不可求 2022-09-09 13:27:31

谢谢各位,关于3楼的,你的那个EVAL  DURATION=%DIFF(CURTIM:ENDTIM:*SECONDS)中的%DIFF没见过啊,小弟寡闻啊.CURTIM&ENDTIM是怎么去相比较的,比如23:59:57和01:59:35也可以比较么?隔天了哦.....

究竟谁懂我的在乎 2022-09-09 10:21:47

本帖最后由 q疯哥p 于 2010-05-07 17:42 编辑

如何程序运行到一半就停了下来该怎么办。。。我觉得可以将其嵌到另一个程序中,在那计算时间差。

请叫√我孤独 2022-09-09 04:51:38

本帖最后由 franliu 于 2010-05-07 16:39 编辑

用 ILE RPG 非常容易。下面的代码供参考:

D STRTIM          S               Z      
D ENDTIM          S               Z      
D DURATION      S             30P 0         
C* Capture program start time
C                   TIME                    CURTIM     

...

C* Capture program end time
C                   TIME                    ENDTIM     

C* Calculate duration in seconds         
   
C                   EVAL      DURATION  =  %DIFF(STRTIM:ENDTIM:*SECONDS)

分開簡單 2022-09-09 04:05:43

直接用subdur就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文