60 character(STRING):: result
63 integer :: year, mon, day, hour,
min, csec_len
65 character(TOKEN) :: zone
66 character(STRING) :: csec
70 & year=year, mon=mon, day=day, hour=hour,
min=
min, sec=sec, zone=zone)
73 if ( trim(csec) ==
'-0.' ) csec =
'0.'
74 do while ( index(
'123456789.', csec(len_trim(csec):len_trim(csec)) ) == 0 )
75 if ( len_trim(csec) < 2 )
exit
76 csec = csec(1:len_trim(csec)-1)
78 if (int(sec) > -1 .and. int(sec) < 10)
then
79 if (len_trim(csec) >= len(csec))
then
80 csec =
'0' // trim(csec(1:len(csec) - 1))
82 csec =
'0' // trim(csec)
85 csec_len = len(trim(adjustl(csec)))
86 if (csec(csec_len:csec_len) ==
'.') csec = csec(1:csec_len-1)
88 result =
cprintf(
'%04d-%02d-%02dT%02d:%02d:%c%c', &
89 & i=(/year, mon, day, hour,
min/), &
90 & c1=trim(csec), c2=trim(zone))
155 character(STRING):: result
158 integer :: year, mon, day, hour,
min, csec_len
160 character(STRING) :: csec
164 if ( .not. diff % nondim_flag )
then
165 call eval(diff, year=year, mon=mon, day=day, hour=hour,
min=
min, sec=sec)
167 if ( year < 0 .or. mon < 0 .or. day < 0 .or. &
168 & hour < 0 .or.
min < 0 .or. sec < 0 )
then
169 year=
abs(year) ; mon=
abs(mon) ; day=
abs(day)
177 if ( trim(csec) ==
'-0.' ) csec =
'0.'
178 do while ( index(
'123456789.', csec(len_trim(csec):len_trim(csec)) ) == 0 )
179 if ( len_trim(csec) < 2 )
exit
180 csec = csec(1:len_trim(csec)-1)
182 if (
int(sec) > -1 .and.
int(sec) < 10)
then
183 if (len_trim(csec) >= len(csec))
then
184 csec =
'0' // trim(csec(1:len(csec) - 1))
186 csec =
'0' // trim(csec)
189 csec_len = len(trim(adjustl(csec)))
190 if (csec(csec_len:csec_len) ==
'.') csec = csec(1:csec_len-1)
192 result =
cprintf(
'%c%04d-%02d-%02dT%02d:%02d:%c', &
193 & i=(/year, mon, day, hour,
min/), &
194 & c1=pm, c2=trim(csec))
250 character(TOKEN) :: result
252 logical,
intent(in),
optional:: upcase
254 select case( time % caltype )
character(token) function dcdatetimetocharcal(time, upcase)
character(string) function dcdatetimetochar(time)
Convert DC_DATETIME, DC_DIFFTIME to character strings.
character(string) function dcdifftimetochar(diff)
Interface declarations for procedures provided from dc_date.
Derived types and parameters for date and time.
integer, parameter, public cal_noleap
Calendar without leap years (365 days per year)
integer, parameter, public cal_cyclic
Cyclic calendar (30.6 days per month)
integer, parameter, public cal_gregorian
Gregorian calendar
integer, parameter, public cal_julian
Julian calendar
Judge optional control parameters.
logical function, public present_and_true(arg)
Scaled seconds module for precise time operations.
Handling character types.
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