玄関へお回り下さい。
日付と時刻に関する処理色々(その1) (28個)             (SNo.079)

1.現在の日付を取得する
2.現在の時刻を取得する
3.現在の日付と時刻を取得する
4.指定日の曜日を取得する
5.指定年月の末日を取得する
6.指定年がうるう年かを判定する
7.指定の日付データから年月日を個別に取得する
8.指定の日付データから時分秒を個別に取得する
9.指定月の第一指定曜日の日付を取得する
10.指定月の指定週の指定曜日は何日かを求める関数
使用コントロール Button1  〜 Button10
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
 
1.現在の日付を取得する

Private Sub Button1_Click(ByVal sender As System.Object, _
                         
ByVal e As System.EventArgs) Handles Button1.Click
'現在の日付を取得する
    Debug.WriteLine(System.DateTime.Today)     
'結果 2005/10/06 00:00:00
    MessageBox.Show(System.DateTime.Today)     
'結果 2005/10/06 (表示結果が違う)

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    Debug.WriteLine(Microsoft.VisualBasic.Today)   
'結果 2005/10/06 00:00:00
    MessageBox.Show(Microsoft.VisualBasic.Today)   
'結果 2005/10/06 (表示結果が違う)
End Sub


日付及び時刻が初期値(未設定)の場合はLabel や TextBox 等には表示されないがDebug.WriteLine や Console.WriteLine で表示した場合は、表示される。
以下 Microsoft.VisualBasic の名前空間 を省略します。又、結果表示は、ありのままで表示します。


2.現在の時刻を取得する

Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button2.Click
'現在の時刻を取得する
    Debug.WriteLine(System.DateTime.Now.TimeOfDay)          '結果 11:40:05.0937500
    Debug.WriteLine(System.DateTime.Now.ToLongTimeString)   '結果  11:40:05

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    Debug.WriteLine(TimeOfDay)    '結果  0001/01/01 11:40:05
    Debug.WriteLine(TimeString)   '結果  11:40:05
End Sub

3.現在の日付と時刻を取得する

Private Sub Button3_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button3.Click
'現在の日付と時刻を取得する
    Debug.WriteLine(System.DateTime.Now)        '結果 2005/10/06 13:21:48

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    Debug.WriteLine(Microsoft.VisualBasic.Now)  '結果 2005/10/06 13:21:48
End Sub

4.指定日の曜日を取得する

Private Sub Button4_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button4.Click
'指定日の曜日を取得する
    Dim dt As System.DateTime = System.DateTime.Now
    Debug.WriteLine(dt.DayOfWeek)               '結果 Thursday
    Debug.WriteLine(dt.ToString("dddd"))        '結果 木曜日

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    Debug.WriteLine(Weekday(Now))               '結果 5
    Debug.WriteLine(WeekdayName(Weekday(Now)))  '結果 木曜日
End Sub


5.指定年月の末日を取得する

Private Sub Button5_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button5.Click
'指定年月の末日を取得する
    Dim dt As System.DateTime = CDate("2004/02/01")
    Debug.WriteLine(System.DateTime.DaysInMonth(dt.Year, dt.Month))     '結果  29

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    Debug.WriteLine(Microsoft.VisualBasic.Day( _
        DateAdd("d", -1, DateAdd("m", 1, DateValue("2004/02/01")))))    '結果  29
End Sub


6.指定年がうるう年かを判定する

Private Sub Button6_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button6.Click
'指定年がうるう年かを判定する
    Dim dt As System.DateTime = "2004/02/01"
    If System.DateTime.IsLeapYear(dt.Year) Then
        MessageBox.Show("うるう年です。")
    Else
        MessageBox.Show("うるう年ではありません。")
    End If

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    If IsDate("2004/2/29") Then
        MessageBox.Show("うるう年です。")
    Else
        '日付型データで無いと判断される(2月29日は無い)
        MessageBox.Show("うるう年ではありません。")
    End If
    '又は、月末日を取得して、29日ならうるう年とする。
End Sub


7.指定の日付データから年月日を個別に取得する

Private Sub Button7_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button7.Click
'指定の日付データから年月日を個別に取得する
    Dim dt As System.DateTime = System.DateTime.Now
    Debug.WriteLine(dt.Year)     '結果  2005
    Debug.WriteLine(dt.Month)    '結果  10
    Debug.WriteLine(dt.Day)      '結果  5

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    Debug.WriteLine(Year(Now))                      '結果  2005
    Debug.WriteLine(Month(Now))                     '結果  10
    Debug.WriteLine(Microsoft.VisualBasic.Day(Now)) '結果  5
End Sub

8.指定の日付データから時分秒を個別に取得する(2)

Private Sub Button8_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button8.Click
'指定の日付データから時分秒を個別に取得する
    Dim dt As System.DateTime = System.DateTime.Now
    Debug.WriteLine(dt.Hour)        '結果  16
    Debug.WriteLine(dt.Minute)      '結果  1
    Debug.WriteLine(dt.Second)      '結果  22

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    Debug.WriteLine(Hour(Now))      '結果  16
    Debug.WriteLine(Minute(Now))    '結果  1
    Debug.WriteLine(Second(Now))    '結果  22
End Sub


9.指定月の第一指定曜日の日付を取得する(2)

Private Sub Button9_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button9.Click
'指定月の第一指定曜日の日付を取得する
    Dim dt As System.DateTime = CDate("2005/10/01")
    Debug.WriteLine(((9 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1)     '3 第一月曜日
    Debug.WriteLine(((9 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 8)     '10 第二月曜日
    Debug.WriteLine(((9 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 15)    '17 第三月曜日

    Debug.WriteLine(((8 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1)     '2 第一日曜日
    Debug.WriteLine(((9 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1)     '3 第一月曜日
    Debug.WriteLine(((10 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1)    '4 第一火曜日
    Debug.WriteLine(((11 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1)    '5 第一水曜日
    Debug.WriteLine(((12 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1)    '6 第一木曜日
    Debug.WriteLine(((13 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1)    '7 第一金曜日
    Debug.WriteLine(((14 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1)    '1 第一土曜日
End Sub

10.指定月の指定週の指定曜日は何日かを求める関数

Private Function GetFirstWeekDay(ByVal MyDate As DateTime, _
        ByVal Week As DayOfWeek, ByVal No As IntegerAs Integer
'指定月の指定週の指定曜日は何日かを求める関数
    Dim dt As DateTime = DateTime.Parse(MyDate.ToString("yyyy/MM/01"))
    '第一週の指定曜日の日にちを求める
    GetFirstWeekDay = (((Week + 8) - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1
    GetFirstWeekDay = GetFirstWeekDay + ((No - 1) * 7)    '指定週の日にちを求める
    '求めた日にちが当月に存在するかをチェック
    If GetFirstWeekDay < 1 Or GetFirstWeekDay > _
                        DateTime.DaysInMonth(MyDate.Year, MyDate.Month) Then
        GetFirstWeekDay = -1     'エラー
    End If
    Return GetFirstWeekDay
End Function


Private Sub Button10_Click(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles Button10.Click
'指定月の指定週の指定曜日は何日かを求める関数の使用例
    Dim dt As System.DateTime = CDate("2005/12/06")         '求める年月
    Dim no As Integer = 4                                   '第何週かを指定
    Dim week As DayOfWeek = DayOfWeek.Monday                '求める曜日
    Dim myDay As Integer = GetFirstWeekDay(dt, week, no)    '関数を実行
    If myDay = -1 Then                                      '取得エラーをチェック
        MessageBox.Show("指定が間違っています。")
    Else
        MessageBox.Show(dt.ToString("yyyy/MM") & " 月の第 " & no _
                                & " " & week.ToString & " は " & myDay & " 日です。")
    End If
End Sub

ついでに作って見ましたが、実用面ではあまり必要がないかも知れませんね。
必要時は、実質1行のコードで取得できるのですから。
メニューの関数・メソッド等の中の[日付・時刻に関する関数(Microsoft.VisualBasic)の使用例] [日付・時刻に関するメソッド(DateTime 構造体)等の使用例その1] [日付・時刻に関するメソッド(DateTime 構造体)等の使用例その2] [日付・時刻に関する書式設定関係のメソッド等の使用例] もご覧下さい。





2004/05/09
2005/10/07


VBレスキュー(花ちゃん)
VB.NET2003  VB2005