23 use dc_string
, only: tochar, cprintf, stoa
27 use dc_message
, only: messagenotify
29 character(STRING):: result
30 type(dc_datetime),
intent(in):: time
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
84 type(dc_difftime),
intent(in):: diff
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)
98 hour=abs(hour) ;
min=abs(
min) ; sec=abs(sec)
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
143 type(dc_datetime),
intent(in):: time
144 logical,
intent(in),
optional:: upcase
146 select case( time % caltype )
159 if ( present_and_true(upcase) )
then integer, parameter, public cal_noleap
integer, parameter, public cal_gregorian
integer, parameter, public token
Character length for word, token.
integer, parameter, public year_months
character(string) function dcdifftimetochar(diff)
integer, parameter, public cal_julian
integer, parameter, public cal_cyclic
integer, parameter, public dp
Double Precision Real number.
integer, parameter, public hour_seconds
Provides kind type parameter values.
integer, parameter, public min_seconds
character(token) function dcdatetimetocharcal(time, upcase)
character(string) function dcdatetimetochar(time)
integer, parameter, public string
Character length for string.