掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
月数で期間計算 (ID:119710)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
開始日、終了日を入力すると自動で月数を計算する プログラムを考えています。 ・したい事 1.2/17〜3/16と入力…1を返す 2.2/17〜4/16と入力…2を返す 3.2/01〜2/28と入力…1を返す 4.2/01〜2/15と入力…0.5を返す datediff("m",xxx,xxx)を使用すると、整数でしか 返さず、4を満たさないために下記のようなコードを 書いてみました。(実際は呼び側で戻り値の小数点2位を四捨五入しています)。 Function GetMonthDiff(dtStart As Date, dtEnd As Date) As Single Dim nDays(12) As Integer Dim nYear As Integer Dim nDay As Integer Dim nDaySpan As Integer nDays(1) = 31: nDays(2) = 28: nDays(3) = 31 nDays(4) = 30: nDays(5) = 31: nDays(6) = 30 nDays(7) = 31: nDays(8) = 31: nDays(9) = 30 nDays(10) = 31: nDays(11) = 30: nDays(12) = 31 nDay = nDays(Month(dtStart)) ' 閏年考慮 If Month(dtStart) = 2 Then nYear = Year(dtStart) If nYear Mod 4 = 0 And nYear Mod 100 <> 0 Or nYear Mod 400 = 0 Then nDay = nDay + 1 End If End If ' 開始日、終了日の日数差を計算する nDaySpan = DateDiff("d", dtStart, dtEnd) GetMonthDiff = (nDaySpan + 1) / nDay End Function これで、仕様1,3,4は満たしているのですが、2.の場合だと、 2.1になってしまいます。 #これはnDayが28で分母が小さい為ですが。 このように現状は1ヶ月しか計算できないプログラムです。 こうしたら良い、とかもっと良い方法がある、とか 知識をお持ちの方いらっしゃいましたらご教授下さい。 以上、よろしくお願い致します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.