subroutine date_and_time (date, time, zone, values) character*8 date character*10 time character*5 zone integer*4 values(8)
这是 Fortran 90 例程 DATE_AND_TIME 的 Fortran 77 版本,不存在 Y2K 问题。
DATE_AND_TIME 子例程返回来自实时时钟和日期的数据。将返回本地时间,以及本地时间与通用协调时间 (Universal Coordinated Time, UTC)(也称为格林威治标准时间,GMT)之间的差值。
DATE_AND_TIME 子例程接受以下参数:
必须是一个字符类型的标量。它的长度必须至少为 8 个字符才能包含完整的值。它是一个输出参数,并且最左侧的 8 个字符设置为 YYYYMMDD 形式的值,其中,YYYY 是四位数的年份,MM 是年份内的月份,DD 是月份内的天。如果没有日期可用,则会将 date 设置为空。
必须是一个字符类型的标量。它的长度必须至少为 10 个字符才能包含完整的值。它是一个输出参数,并且最左侧的 10 个字符设置为 hhmmss.sss 形式的值,其中,hh 是天中的小时,mm 是小时中的分钟,ss.sss 是分钟中的秒和毫秒。如果没有时钟可用,则会将 time 设置为空。
必须是一个字符类型的标量。它的长度必须至少为 5 个字符才能包含完整的值。它是一个输出参数,其最左侧的 5 个字符设置为 +-hhmm 形式的值,其中,hh 和 mm 分别是与 UTC 之间的时间差中的小时数和以分钟表示的非完整小时数。如果没有时钟可用,则会将 zone 设置为空。(注意:本地时区是由操作系统和/或 TZ 环境变量设置的。)
必须属于缺省的整数类型并且必须是一秩元。它是一个输出参数且必须具有至少 8 个元素。values 中返回的值如下所述:
返回值
年份(也就是 1990)
年份中的月份 (1-12)
月份中的天 (1-31)
相对于 UTC 的时间差(分钟)
天中的小时,范围为 0 到 23
小时中的分钟,范围为 0 到 59
分钟中的秒,范围为 0 到 60
秒中的毫秒,范围为 0 到 999
integer*4 date_time(8) character(len=10) big_ben(3) call date_and_time(big_ben(1), big_ben(2), big_ben(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=',big_ben(1) print *, 'TIME=',big_ben(2) print *, 'ZONE=',big_ben(3) end
此程序于 1997 年 10 月 10 日在美国加州运行时,生成以下输出:
date_time array values: year= 1997 month_of_year= 10 day_of_month= 10 time difference in minutes= -420 hour of day= 16 minutes of hour= 35 seconds of minute= 37 milliseconds of second= 708 DATE=19971010 TIME=163537.708 ZONE=-0700
libfui.a
idate(3F)、ctime(3F)、fdate(3F)
《FORTRAN 77 Language Reference Manual》