行年を月まで表示するために使った関数
| 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 | 
 
    
       
       
       
       
       
      
コメント