计算小时,分钟,秒和毫秒时的持续时间

|| 我正在用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
我不确定在这里做什么,谢谢。     
已邀请:
        您可以减去数字,然后将所有内容转换为毫秒,然后将毫秒,秒(以毫秒为单位),分钟(以毫秒为单位),小时(以毫秒为单位)相加... 你的情况是
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) + 
( ... )
    

要回复问题请先登录注册