23 use dc_string,
only: tochar, cprintf, stoa
27 use dc_message,
only: messagenotify
29 character(STRING):: result
32 integer :: year, mon, day, hour,
min, csec_len
34 character(TOKEN) :: zone, csec
38 & year=year, mon=mon, day=day, hour=hour,
min=
min, sec=sec, zone=zone)
41 if ( trim(csec) ==
'-0.' ) csec =
'0.'
42 do while ( index(
'123456789.', csec(len_trim(csec):len_trim(csec)) ) == 0 )
43 if ( len_trim(csec) < 2 )
exit
44 csec = csec(1:len_trim(csec)-1)
46 if (int(sec) > -1 .and. int(sec) < 10) csec =
'0' // csec
47 csec_len = len(trim(adjustl(csec)))
48 if (csec(csec_len:csec_len) ==
'.') csec = csec(1:csec_len-1)
50 result = cprintf(
'%04d-%02d-%02dT%02d:%02d:%c%c', &
51 & i=(/year, mon, day, hour,
min/), &
52 & c1=trim(csec), c2=trim(zone))
78 use dc_string,
only: tochar, cprintf, stoa
83 character(STRING):: result
86 integer :: year, mon, day, hour,
min, csec_len
88 character(TOKEN) :: csec
92 if ( .not. diff % nondim_flag )
then
93 call eval(diff, year=year, mon=mon, day=day, hour=hour,
min=
min, sec=sec)
95 if ( year < 0 .or. mon < 0 .or. day < 0 .or. &
96 & hour < 0 .or.
min < 0 .or. sec < 0 )
then
97 year=
abs(year) ; mon=
abs(mon) ; day=
abs(day)
105 if ( trim(csec) ==
'-0.' ) csec =
'0.'
106 do while ( index(
'123456789.', csec(len_trim(csec):len_trim(csec)) ) == 0 )
107 if ( len_trim(csec) < 2 )
exit
108 csec = csec(1:len_trim(csec)-1)
110 if (
int(sec) > -1 .and.
int(sec) < 10) csec =
'0' // csec
111 csec_len = len(trim(adjustl(csec)))
112 if (csec(csec_len:csec_len) ==
'.') csec = csec(1:csec_len-1)
114 result = cprintf(
'%c%04d-%02d-%02dT%02d:%02d:%c', &
115 & i=(/year, mon, day, hour,
min/), &
116 & c1=pm, c2=trim(csec))
138 use dc_present,
only: present_and_true
141 use dc_string,
only: toupper
142 character(TOKEN) :: result
144 logical,
intent(in),
optional:: upcase
146 select case( time % caltype )
159 if ( present_and_true(upcase) )
then
character(token) function dcdatetimetocharcal(time, upcase)
character(string) function dcdatetimetochar(time)
character(string) function dcdifftimetochar(diff)
integer, parameter, public cal_noleap
integer, parameter, public hour_seconds
integer, parameter, public cal_cyclic
integer, parameter, public year_months
integer, parameter, public cal_gregorian
integer, parameter, public min_seconds
integer, parameter, public cal_julian
Provides kind type parameter values.
integer, parameter, public token
Character length for word, token
integer, parameter, public string
Character length for string
integer, parameter, public dp
Double Precision Real number