libsim  Versione6.3.0

◆ timedelta_getval()

pure subroutine datetime_class::timedelta_getval ( type(timedelta), intent(in)  this,
integer, intent(out), optional  year,
integer, intent(out), optional  month,
integer, intent(out), optional  amonth,
integer, intent(out), optional  day,
integer, intent(out), optional  hour,
integer, intent(out), optional  minute,
integer, intent(out), optional  sec,
integer, intent(out), optional  msec,
integer, intent(out), optional  ahour,
integer, intent(out), optional  aminute,
integer, intent(out), optional  asec,
integer(kind=int_ll), intent(out), optional  amsec,
character(len=*), intent(out), optional  isodate,
character(len=*), intent(out), optional  simpledate,
character(len=12), intent(out), optional  oraclesimdate 
)
private

Restituisce il valore di un oggetto timedelta in una o pi� modalit� desiderate.

Qualsiasi combinazione dei parametri opzionali � consentita. oraclesimedate � obsoleto, usare piuttosto simpledate.

Parametri
[in]thisoggetto di cui restituire il valore
[out]yearanni, /=0 solo per intervalli "popolari"
[out]monthmesi modulo 12, /=0 solo per intervalli "popolari"
[out]amonthmesi totali, /=0 solo per intervalli "popolari"
[out]daygiorni totali
[out]hourore modulo 24
[out]minuteminuti modulo 60
[out]secsecondi modulo 60
[out]msecmillisecondi modulo 1000
[out]ahourore totali
[out]aminuteminuti totali
[out]asecsecondi totali
[out]amsecmillisecondi totali
[out]isodateintervallo totale nel formato GGGGGGGGGG hh:mm:ss.msc (simil-ISO), la variabile può essere più corta di 23 caratteri, in tal caso conterr� solo ci� che vi cape
[out]simpledateintervallo totale nel formato GGGGGGGGhhmmssmsc , la variabile pu� essere pi� corta di 17 caratteri, in tal caso conterr� solo ci� che vi cape, da preferire rispetto a oraclesimdate
[out]oraclesimdateintervallo totale nel formato GGGGGGGGhhmm

Definizione alla linea 1724 del file datetime_class.F90.

1724 
1725  read(chardate(6:7),'(i2)',iostat=ios)lhour
1726  !print*,chardate(6:7),ios,lhour
1727  if (ios /= 0)lhour=imiss
1728 
1729  read(chardate(8:9),'(i2)',iostat=ios)lminute
1730  !print*,chardate(8:9),ios,lminute
1731  if (ios /= 0)lminute=imiss
1732  end if
1733 
1734  this%tendaysp=ltendaysp
1735  this%month=lmonth
1736  this%day=lday
1737  this%hour=lhour
1738  this%minute=lminute
1739 else
1740  this%tendaysp=optio_l(tendaysp)
1741  this%month=optio_l(month)
1742  this%day=optio_l(day)
1743  this%hour=optio_l(hour)
1744  this%minute=optio_l(minute)
1745 end if
1746 
1747 END FUNCTION cyclicdatetime_new
1748 
1751 elemental FUNCTION cyclicdatetime_to_char(this) RESULT(char)
1752 TYPE(cyclicdatetime),INTENT(IN) :: this
1753 
1754 CHARACTER(len=80) :: char
1755 
1756 char=to_char(this%tendaysp)//";"//to_char(this%month)//";"//to_char(this%day)//";"//&
1757 to_char(this%hour)//";"//to_char(this%minute)
1758 
1759 END FUNCTION cyclicdatetime_to_char
1760 
1761 
1774 FUNCTION cyclicdatetime_to_conventional(this) RESULT(dtc)
1775 TYPE(cyclicdatetime),INTENT(IN) :: this
1776 
1777 TYPE(datetime) :: dtc
1778 
1779 integer :: year,month,day,hour
1780 
1781 dtc = datetime_miss
1782 
1783 ! no cyclicdatetime present -> year=1001 : yearly values (no other time dependence)
1784 if ( .not. c_e(this)) then
1785  dtc=datetime_new(year=1007, month=1, day=1, hour=1, minute=1)
1786  return
1787 end if
1788 
1789 ! minute present -> not good for conventional datetime
1790 if (c_e(this%minute)) return
1791 ! day, month and tendaysp present -> no good
1792 if (c_e(this%day) .and. c_e(this%month) .and. c_e(this%tendaysp)) return
1793 
1794 if (c_e(this%day) .and. c_e(this%month)) then
1795  dtc=datetime_new(year=1001, month=this%month, day=this%day, hour=1, minute=1)
1796 else if (c_e(this%tendaysp) .and. c_e(this%month)) then
1797  day=(this%tendaysp-1)*10+1
1798  dtc=datetime_new(year=1003, month=this%month, day=day, hour=1, minute=1)
1799 else if (c_e(this%month)) then
1800  dtc=datetime_new(year=1005, month=this%month, day=1, hour=1, minute=1)

Generated with Doxygen.