Class k_date
In: k_date.f90

Methods

DayOfYear   MJD   readDate  

Public Instance methods

Function :
result :real(8)
year :integer, intent(in)
:
month :integer, intent(in)
:
day :integer, intent(in)
:
hour :integer, intent(in), optional
:
minute :integer, intent(in), optional
:
second :integer, intent(in), optional
:

入力日時から変数 year の通日 (Day of Year) を返す。

[Source]

  real(8) function DayOfYear(year,month,day,hour,minute,second) result(result)
    !
    ! 入力日時から変数 year の通日 (Day of Year) を返す。
    !
    integer, intent(in)           :: year     ! 年
    integer, intent(in)           :: month    ! 月
    integer, intent(in)           :: day      ! 日
    integer, intent(in), optional :: hour     ! 時
    integer, intent(in), optional :: minute   ! 分
    integer, intent(in), optional :: second   ! 秒
    if (present(second)) then
       result = MJD(year,month,day,hour,minute,second)
    else if (present(minute)) then
       result = MJD(year,month,day,hour,minute)
    else if (present(hour)) then
       result = MJD(year,month,day,hour)
    else
       result = MJD(year,month,day)
    end if
    result = result - MJD(year,1,1) + 1.0
  end function DayOfYear
Function :
result :real(8)
year :integer, intent(in)
:
month :integer, intent(in)
:
day :integer, intent(in)
:
hour :integer, intent(in), optional
:
minute :integer, intent(in), optional
:
second :integer, intent(in), optional
:

入力日時から修正ユリウス通日を返す。

[Source]

  real(8) function MJD(year,month,day,hour,minute,second) result(result)
    !
    ! 入力日時から修正ユリウス通日を返す。
    !
    integer, intent(in)           :: year    ! 年
    integer, intent(in)           :: month   ! 月
    integer, intent(in)           :: day     ! 日
    integer, intent(in), optional :: hour    ! 時
    integer, intent(in), optional :: minute  ! 分
    integer, intent(in), optional :: second  ! 秒
    integer, external             :: julday  ! ユリウス日
                                             ! (紀元前4713年1月1日12:00)
    result = julday(month,day,year) - 2400000.5
    if (present(hour)) then
       result = result + hour/24.0
    end if
    if (present(minute)) then
       result = result + minute/24.0/60.0
    end if
    if (present(second)) then
       result = result + second/24.0/60.0/60.0
    end if
  end function MJD
Subroutine :
year :integer, intent(out)
month :integer, intent(out)
day :integer, intent(out)
hour :integer, intent(out)
minute :integer, intent(out)
second :integer, intent(out)

年、月、日、時、分、秒を標準入力から読み込む。

[Source]

  subroutine readDate(year,month,day,hour,minute,second)
    !
    ! 年、月、日、時、分、秒を標準入力から読み込む。
    !
    integer, intent(out) :: year
    integer, intent(out) :: month
    integer, intent(out) :: day
    integer, intent(out) :: hour
    integer, intent(out) :: minute
    integer, intent(out) :: second
    write(*,*) 'Year ?'   
 read(*,*) year
    write(*,*) 'Month ?'  
 read(*,*) month
    write(*,*) 'Day ?'    
 read(*,*) day
    write(*,*) 'Hour ?'   
 read(*,*) hour
    write(*,*) 'Minute ?' 
 read(*,*) minute
    write(*,*) 'Second ?' 
 read(*,*) second
    write(*,'(a,i4,a,i2,a,i2,a,i2,a,i2,a,i2)')                         'date::', year, '/', month,  '/', day,   ' ',                         hour, ':', minute, ':', second
  end subroutine readDate

[Validate]