如何在 Fortran 中获取以毫秒为单位的当前时间?

How to get the current time in millisecond in Fortran?

我想在 Fortran 中以毫秒为单位获取当前系统时间。我无法使用 system_clock,因为我不知道如何从中获取当前时间。

这说明了如何使用 date_and_time:

获取自午夜以来的毫秒数
program time
  integer :: values(8)
  real    :: rTime

  ! Get the values
  call date_and_time(values=values)

  ! From https://gcc.gnu.org/onlinedocs/gfortran/DATE_005fAND_005fTIME.html
  ! values(5) ... The hour of the day
  ! values(6) ... The minutes of the hour
  ! values(7) ... The seconds of the minute
  ! values(8) ... The milliseconds of the second 

  ! Calculate time since midnight
  rTime = ( values(5) )*60.         ! Hours to minutes
  rTime = ( rTime + values(6) )*60. ! Minutes to seconds
  rTime = ( rTime + values(7) )*1e3 ! Seconds to milliseconds
  rTime = rTime + values(8)         ! Add milliseconds

  ! Time in seconds 
  print *, 'Time (ms) since midnight', rTime
end program

我想你的问题是:"how can I call date_and_time subroutin and access it to calculate ms?"我说得对吗? Alexander 的回答是 true.also 您可以使用此代码:

  program time
  integer :: values(8)
  call date_and_time(values=values)
  print *, values(5),":",values(6),":",values(7),":",values(8)
  end program time

您可以使用 ITIME(),一个嵌入 Fortran 的函数。它returns一个以毫秒为单位的实数。您只需要调用它两次并将两个值相减即可计算出时间间隔。