VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 日付・時刻関係のメニュー
1.日付・時刻に関する System 名前空間のメソッド等の紹介
2.DateTime 書式指定文字の実行例及び書式設定応用例
3.日付・時刻に関するワンポイントテクニック集
4.満年齢と月数・日数を取得及び干支を取得
5.指定時間待つ DLL の作成と使用例
6.
7.
8.
9.
10.
11.
12.
 .
20.その他、当サイト内に掲載の日付・時刻に関するサンプル


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.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)





このページのトップへ移動します。