1.4.7 date:获取以字符串表示的当前日期
注 –
由于该例程只返回两位数值的年份,因此它存在“2000 年安全”问题。在 1999 年 12 月 31 日之后,使用该例程输出计算日期差异的程序可能无法正常工作。如果执行使用此 date() 例程的程序,第一次调用该例程时会显示运行时警告消息,向用户发出报警。请参见另一个可换用的例程 date_and_time()。
该子例程的调用方式如下所示:
call date(c )
cCHARACTER*9输出变量、数组、数组元素或字符子串
返回的字符串 c 的格式为 dd-mmm-yy,其中 dd 表示两位数的当月日期,mmm 表示三个字母的月份缩写,yy 表示两位数的年份(因此存在 2000 年安全问题!)。
示例:date:
demo% cat dat1.f
* dat1.f -- Get the date as a character string.
character c*9
call date ( c )
write(*,"(’ The date today is: ’, A9 )" ) c
end
demo% f95 dat1.f
demo% a.out
Computing time differences using the 2 digit year from subroutine
date is not safe after year 2000.
The date today is: 9-Jan-02
demo%
另请参见 idate() 和 date_and_time()。
1.4.7.1 date_and_time:获取日期和时间
这是一个 2000 年安全的 Fortran 95 内例程。
子例程 date_and_time 返回实时时钟和日期的相关数据。返回数据包括本地时间以及本地时间与通用协调时间 (Universal Coordinated Time, UTC) 之间的时差,通用协调时间也称为格林威治标准时间 (Greenwich Mean Time, GMT)。
子例程 date_and_time() 的调用方式如下:
call date_and_time( date, time, zone, values )
dateCHARACTER*8输出以 CCYYMMDD 格式表示的日期,其中 CCYY 表示四位数的年份,MM 表示两位数的月份,DD 表示两位数的当月日期。例如:19980709
timeCHARACTER*10输出以 hhmmss.sss 格式表示的当前时间,
其中 hh 表示小时,mm 表示分钟,ss.sss 表示秒和毫秒。
zoneCHARACTER*5输出与 UTC 的时差,以小时数和分钟数表示,采用 hhmm 格式。
valuesINTEGER*4 VALUES(8)输出下面介绍的 8 个元素组成的整数数组。
INTEGER*4 values 数组中返回的 8 个值为
VALUES(1)以 4 位整数表示的年份。例如:1998。
VALUES(2)以从 1 到 12 的整数表示的月份。
VALUES(3)以从 1 到 31 的整数表示的当月日期。
VALUES(4)以分钟数表示的与 UTC 的时差。
VALUES(5)以从 1 到 23 的整数表示的当天小时时间。
VALUES(6)以从 1 到 59 的整数表示的一个小时中的分钟时间。
VALUES(7)以从 0 到 60 的整数表示的一分钟中的秒数。
VALUES(8)位于范围 0 至 999 中的毫秒数。
date_and_time 使用示例:
demo% cat dtm.f
integer date_time(8)
character*10 b(3)
call date_and_time(b(1), b(2), b(3), date_time)
print *,’date_time array values:’
print *,’year=’,date_time(1)
print *,’month_of_year=’,date_time(2)
print *,’day_of_month=’,date_time(3)
print *,’time difference in minutes=’,date_time(4)
print *,’hour of day=’,date_time(5)
print *,’minutes of hour=’,date_time(6)
print *,’seconds of minute=’,date_time(7)
print *,’milliseconds of second=’,date_time(8)
print *, ’DATE=’,b(1)
print *, ’TIME=’,b(2)
print *, ’ZONE=’,b(3)
end
2000 年 2 月 16 日在美国加利福尼亚的一台计算机上运行该例程时,输出结果如下所示:
date_time array values:
year= 2000
month_of_year= 2
day_of_month= 16
time difference in minutes= -420
hour of day= 11
minutes of hour= 49
seconds of minute= 29
milliseconds of second= 236
DATE=20000216
TIME=114929.236
ZONE=-0700