日付と時刻に関する処理色々(その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 Integer) As 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] [日付・時刻に関する書式設定関係のメソッド等の使用例] もご覧下さい。 |