当您有小时,分钟,秒和毫秒时计算持续时间
我正在使用Fortran编写程序,我需要一种计算程序持续时间到毫秒的方法。我一直在使用函数“date_and_time”,这给我留下了一个数组,其中包含系统时间的数小时,分钟,秒和毫秒。当您有小时,分钟,秒和毫秒时计算持续时间
我相信我可以在我的程序开始时调用该函数来存储当前时间,然后在程序结束时再次调用该函数以存储最新时间。但在此之后,我将如何计算持续时间?我尝试减去这些值,但是当秒数通过时,毫秒重置,就像一分钟过去时重置的秒数一样。怎么会是最好的方法来解决这个问题呢?
下面是程序:
PROGRAM TEST_TIME_AND_DATE
INTEGER I
REAL J
INTEGER TIME_A(8), TIME_B(8)
CALL DATE_AND_TIME(VALUES=TIME_A)
PRINT '(8I5))', TIME_A
DO I = 0, 400000000
J = I * I - J
END DO
CALL DATE_AND_TIME(VALUES=TIME_B)
print '(8I5))', TIME_B
END PROGRAM TEST_TIME_AND_DATE
这里是结果:
2011 6 11 -300 9 14 49 304
2011 6 11 -300 9 14 50 688
我不知道该怎么办这里,谢谢。
您可以减去的数字,那么一切都转化为毫秒,总结毫秒,秒以毫秒,分钟,MS,以毫秒小时,...
在你的情况,这将是
0 + 0 + 0 + 0 + 0 + 1*1000 + 384 = 1384 [ms]
这种方法也可以很好地处理溢出问题,因为如果左侧多列中的正数都转换为相同的基数,则超出负数。例如。 0:58.000
到1:02.200
产生
1 * 60000 + (-56) * 1000 + 200 = 4200
请注意,这并工作到天,但不伴月,因为它们不共享一个共同的长度。
如果您需要经过的时钟时间,使用内部过程system_clock会更简单,因为它提供了单个时间值输出。 (提供有关该过程的信息的其他参数,这就是为什么它是一个过程而不是函数。)请参阅,例如,http://gcc.gnu.org/onlinedocs/gfortran/SYSTEM_005fCLOCK.html。如果要计算CPU使用率,请使用cpu_time。对于任何两个电话,在节目的开始和结束时,都有一个简单的区别。您可以使用COUNT_RATE参数将整数计数转换为秒数。
您可以以秒或毫秒为单位计算某个开始时间(UNIX的1970年1月1日)的偏移量。这些数字的差异是你的流逝时间。
(2011 - 1970) * (number of seconds in a year) +
(month of the year - 1) * (number of seconds in a month) +
(day of the month - 1) * (number of seconds in a day) +
(...)
如果这两个数字跨越一个边界,我不确定这会工作。如果你的开始日期是12/30,结束日期是1/2,那么减去月份会给你-11,减去日期会给你-28。 – eaolson 2011-06-11 14:31:28
@eaolson添加了关于它的注释。 – Howard 2011-06-11 14:37:12
谢谢,这正是我需要的! – Anthony 2011-06-11 14:58:06