4.満年齢と月数・日数を取得及び干支を取得(30_Day_04) (旧、SampleNo.083) |
1.期間内の満のトータル月数を求める 2.期間内の満の年数/月数/日数を求める 3.指定年の干支を求める 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.期間内の満のトータル月数を求める |
下記は、2.と3.のサンプルとも共通 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'コントロールパネルの地域の日付け形式に影響されないように設定(このスレッドだけ) System.Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("ja") TextBox1.Text = "2010/01/15" TextBox2.Text = Now.ToString("d") End Sub Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click '期間内の満のトータル月数を求める Dim dt1 As DateTime = DateTime.Parse(TextBox1.Text) Dim dt2 As DateTime = DateTime.Parse(TextBox2.Text) 'DateDiff メソッド :2 つの Date 値の間に含まれる時間間隔の数を指定する Long 値を返す Dim mot As Integer = CInt(DateDiff("m", dt1, dt2) + CInt((Format(dt1, "dd") > Format(dt2, "dd")))) MessageBox.Show("期間内月数 = " & mot.ToString & " ヶ月") MessageBox.Show((mot \ 12).ToString & " 年 " & (mot Mod 12).ToString & " ヶ月") mot = fTotalMonths(dt1, dt2) MessageBox.Show("期間内月数 = " & mot.ToString & " ヶ月") MessageBox.Show((mot \ 12).ToString & " 年 " & (mot Mod 12).ToString & " ヶ月") End Sub '下記は、2.のサンプルでも使用します。 Private Function fTotalMonths(ByVal oldDate As Date, ByVal newDate As Date) As Integer '指定期間内の満のトータル月数を求める関数 '期間内の年数を求め、それを月数に換算する。 Dim dYY As Integer = (CInt(newDate.Year) - CInt(oldDate.Year)) * 12 '年内の月数の差を求め、上記月数に加算(減算)する。 fTotalMonths = dYY + (CInt(newDate.Month) - CInt(oldDate.Month)) + CInt(oldDate.ToString("dd") > newDate.ToString("dd")) End Function |
2.期間内の満の年数/月数/日数を求める |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim dt1 As DateTime = DateTime.Parse(TextBox1.Text) Dim dt2 As DateTime = DateTime.Parse(TextBox2.Text) MessageBox.Show(fGetJapAge(dt1, dt2)) End Sub Private Function fGetJapAge(ByVal birthday As Date, ByVal toDay As Date) As String '期間内の満の年数/月数/日数を求める関数 Dim bYY, bMM, bDD As Integer '期間の月数を求める bMM = fTotalMonths(birthday, toDay) If birthday.Day > toDay.Day Then '前月の末日を求める bDD = System.DateTime.DaysInMonth(toDay.Year, toDay.AddMonths(-1).Month) '末日までの日数を求める bDD = bDD - birthday.Day '当月の日数をプラスする bDD = bDD + toDay.Day '1ヶ月未満の日数を求める Else bDD = toDay.Day - birthday.Day '1ヶ月未満の日数を求める End If bYY = bMM \ 12 '年数を求める bMM = bMM Mod 12 '月数を求める Return bYY & "年" & bMM & "月" & bDD & "日" End Function |
3.指定年の干支を求める |
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '指定年の干支を求める Dim eto As String = "申酉戌亥子丑寅卯辰巳午未" MessageBox.Show(String.Format(CDate(TextBox1.Text).Year.ToString & " 年の干支は、= {0} です。", _ eto.Substring((CDate(TextBox1.Text).Year Mod 12), 1))) End Sub |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |