行年を月まで表示するために使った関数
行年を月まで表示するために使った関数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Public
Shared Function
GetElapsedYears(ByVal baseDay As
DateTime,
ByVal day As
DateTime)
As
Integer ' 経過月数÷12(端数切り捨て)したものを経過年数とする '
(満12ヶ月で満1年とする) Return
GetElapsedMonths(baseDay,
day)
\
12 End
Function Public
Shared Function
GetElapsedMonths(ByVal baseDay As
DateTime,
ByVal day As
DateTime)
As
Integer ' 日付が基準日より前の場合は例外とする If day < baseDay Then Throw New ArgumentException() '
経過月数を求める(満月数を考慮しない単純計算) Dim elapsedMonths As
Integer
=
(day.Year
-
baseDay.Year)
*
12
+
(day.Month
-
baseDay.Month) If
baseDay.Day
<=
day.Day Then ' baseDayの日部分がdayの日部分以上の場合は、その月を満了しているとみなす '
(例:1月30日→3月30日以降の場合は満(3-1)ヶ月) Return
elapsedMonths ElseIf
day.Day
=
DateTime.DaysInMonth(day.Year,
day.Month)
AndAlso day.Day
<=
baseDay.Day Then ' baseDayの日部分がdayの表す月の末日以降の場合は、その月を満了しているとみなす '
(例:1月30日→2月28日(平年2月末日)/2月29日(閏年2月末日)以降の場合は満(2-1)ヶ月) Return
elapsedMonths Else ' それ以外の場合は、その月を満了していないとみなす '
(例:1月30日→3月29日以前の場合は(3-1)ヶ月未満、よって満(3-1-1)ヶ月) Return
elapsedMonths
-
1 End
If End
Function |