コミュニティでの活動の履歴として、自身(Orator/魔界の仮面弁士)が掲示板・Mailing List・Newsgroup等へ発言した内容の中で、再利用できそうな物を拾い出して、掲載しています。

Main | 2000年06月 »
[VB6] 春分/秋分日を求める / 1999年10月28日(木)

指定された年の 春分日 / 秋分日 を返します。

  • D = GetEquinoxDay(2002, True) … 2002年の春分日
  • D = GetEquinoxDay(2002, False)… 2002年の秋分日


[10/28/1999]

Public Function GetEquinoxDay(ByVal YYYY As Integer, ByVal IsVernal As Boolean) As Date
    Dim Revise As Variant

    '"年"の範囲チェック
    Select Case YYYY
      Case 1851 To 1899
        Revise = CDec(IIf(IsVernal, "19.8277", "22.2588"))
      Case 1900 To 1979
        Revise = CDec(IIf(IsVernal, "20.8357", "23.2588"))
      Case 1980 To 2099
        Revise = CDec(IIf(IsVernal, "20.8431", "23.2488"))
      Case 2100 To 2150
        Revise = CDec(IIf(IsVernal, "21.8510", "24.2488"))
      Case Else
        '非対応範囲の場合に、0 を返すようにするならこっち。
        'GetEquinoxDay = CDate(0)

        '非対応範囲の場合に、エラーで返すようにするならこっち。
        Err.Raise 5
        Exit Function
    End Select

    Dim Y0 As Integer, Y1 As Variant, Y2 As Variant
    Y0 = YYYY - 1980
    Y1 = CDec(Y0) * CDec("0.242194")	'太陽年は、365.242194日。
    Y2 = CDec(Y0 \ 4)

    Dim M As Integer, D As Integer
    M = IIf(IsVernal, 3, 9)	'春分日は3月、秋分日は9月。
    D = CInt(Int(Revise + Y1 - Y2))

    GetEquinoxDay = DateSerial(YYYY, M, D)
End Function

続きを読む...  
Posted at 19:40 / Visual Basic / この記事のURL
コメント(0)
P R

Microsoft Most Valuable Professional, Visual Developer - Visual BasicMSMVP for Visual Basic


Global Media Online INC.