Sun Studio 12:Fortran 库参考

1.4.7 date:获取以字符串表示的当前日期


注 –

由于该例程只返回两位数值的年份,因此它存在“2000 年安全”问题。在 1999 年 12 月 31 日之后,使用该例程输出计算日期差异的程序可能无法正常工作。如果执行使用此 date() 例程的程序,第一次调用该例程时会显示运行时警告消息,向用户发出报警。请参见另一个可换用的例程 date_and_time()


该子例程的调用方式如下所示:

call date( c )

c

CHARACTER*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 )

date

CHARACTER*8

输出 

以 CCYYMMDD 格式表示的日期,其中 CCYY 表示四位数的年份,MM 表示两位数的月份,DD 表示两位数的当月日期。例如:19980709 

time

CHARACTER*10

输出 

以 hhmmss.sss 格式表示的当前时间, 其中 hh 表示小时,mm 表示分钟,ss.sss 表示秒和毫秒。 

zone

CHARACTER*5

输出 

与 UTC 的时差,以小时数和分钟数表示,采用 hhmm 格式。 

values

INTEGER*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