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

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


3.日付・時刻に関するワンポイントテクニック集(30_Day_03) (旧、SampleNo.079 / 080)
1 .現在の日付を取得する
2 .現在の日付と時刻を取得する
3 .現在の時刻を取得する
4 .指定日の曜日を取得する
5 .指定年月の末日を取得する
6 .指定年がうるう年かを判定する
7 .指定の日付データから年月日を個別に取得する
8 .指定の日付データから時分秒を個別に取得する
9 .月のデータを1月のように月を含んで取得
10.指定月の第一指定曜日の日付を取得する
11.指定月の指定週の指定曜日は何日かを求める関数の使用例
12.今年のクリスマスイブは何曜日?
13.1月1日からの通算日を取得(1〜366)
14.指定した日付に任意の日数を加算
15.愛子様が生まれた日からの日数を求める
16.プログラム等の処理時間を計測する(3方法)
17.西暦から和暦に変換
18.和暦から西暦に変換
19.文字列(数字)を日付型へ変換
20.日付型の文字列をDate型の値に変換する
21.文字列の時刻情報を日付型の値に変換する
22.年、月、日を表す日付型の値に変換
23.時、分、秒を表す日付型の値に変換
24.コントロールパネルの地域の設定に影響されない日時の取得
25.Date 型の型変換時のエラーチェック
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :sysDT = System.DateTime / System.Globalization
参照設定:
追加なし
その他 :下記の1行を Form1_Load イベント内に記入しておいて下さい。(コントロールパネルの地域の日付け形式に影響されないように)
    :System.Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("ja")
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.現在の日付を取得する

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'現在の日付を取得する
    TextBox1.Text = "現在の日付を取得する" & vbCrLf
    TextBox1.Text &= String.Format("System.DateTime.Today       = {0}", System.DateTime.Today) & vbCrLf

'以下、Imports sysDT = System.DateTime を宣言して、下記のように省略します。
    TextBox1.Text &= String.Format("sysDT.Today            = {0}", sysDT.Today) & vbCrLf

    '名前空間 : Microsoft.VisualBasic の機能でも同様に取得できますが、以後の紹介は省略します。
    TextBox1.Text &= String.Format("Microsoft.VisualBasic.Today = {0}", Microsoft.VisualBasic.Today) & vbCrLf

'上記実行結果
'System.DateTime.Today       = 2014/05/09 00:00:00
'sysDT.Today            = 2014/05/09 00:00:00
'Microsoft.VisualBasic.Today = 2014/05/09 00:00:00
End Sub

このページのトップへ移動します。 2.現在の日付と時刻を取得する

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'現在の日付と時刻を取得する
    TextBox1.Text = "現在の日付と時刻を取得する" & vbCrLf
    TextBox1.Text &= String.Format("sysDT.Now = {0}", sysDT.Now) & vbCrLf

'上記実行結果
'sysDT.Now = 2014/05/09 09:57:24
End Sub

このページのトップへ移動します。 3.現在の時刻を取得する

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'現在の時刻を取得する
    TextBox1.Text = "現在の時刻を取得する" & vbCrLf
    Dim dt As System.DateTime = sysDT.Now
    TextBox1.Text &= String.Format("dt = sysDT.Now      = {0}", dt) & vbCrLf
    '現在の時刻を取得する
    TextBox1.Text &= String.Format("dt.TimeOfDay        = {0}", dt.TimeOfDay) & vbCrLf
    '現在の時刻を長い形式の時刻で取得する
    TextBox1.Text &= String.Format("dt.ToLongTimeString = {0}", dt.ToLongTimeString) & vbCrLf

'上記実行結果
'dt = sysDT.Now      = 2014/05/09 09:58:00
'dt.TimeOfDay        = 09:58:00.4180390
'dt.ToLongTimeString = 09:58:00
End Sub

このページのトップへ移動します。 4.指定日の曜日を取得する

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'指定日の曜日を取得する
    TextBox1.Text = "指定日の曜日を取得する" & vbCrLf
    Dim dt As System.DateTime = sysDT.Now
    TextBox1.Text &= String.Format("dt = sysDT.Now        = {0}", dt) & vbCrLf
    TextBox1.Text &= String.Format("dt.DayOfWeek          = {0}", dt.DayOfWeek) & vbCrLf
    TextBox1.Text &= String.Format("dt.ToString(""dddd"")   = {0}", dt.ToString("dddd")) & vbCrLf

'上記実行結果
'dt = sysDT.Now        = 2014/05/09 09:58:33
'dt.DayOfWeek          = Friday
'dt.ToString("dddd")   = 金曜日
End Sub

このページのトップへ移動します。 5.指定年月の末日を取得する 

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
'指定年月の末日を取得する
    TextBox1.Text = "指定年月の末日を取得する" & vbCrLf
    Dim dt As System.DateTime = sysDT.Parse("2014/05/09")  ' System.DateTime.Now
    TextBox1.Text &= String.Format("sysDT.DaysInMonth(dt.Year, dt.Month) = {0}", sysDT.DaysInMonth(dt.Year, dt.Month))

'上記実行結果
'sysDT.DaysInMonth(dt.Year, dt.Month) = 31
End Sub

このページのトップへ移動します。 6.指定年がうるう年かを判定する

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
'指定年がうるう年かを判定する
    TextBox1.Text = "指定年がうるう年かを判定する" & vbCrLf
    TextBox1.Text &= String.Format("IIf(sysDT.IsLeapYear(2014), ""うるう年"", ""うるう年でない"") = {0}", _
                                    IIf(sysDT.IsLeapYear(2014), "うるう年", "うるう年でない")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(sysDT.IsLeapYear(2012), ""うるう年"", ""うるう年でない"") = {0}", _
                                    IIf(sysDT.IsLeapYear(2012), "うるう年", "うるう年でない")) & vbCrLf

'上記実行結果
'IIf(sysDT.IsLeapYear(2014), "うるう年", "うるう年でない") = うるう年でない
'IIf(sysDT.IsLeapYear(2012), "うるう年", "うるう年でない") = うるう年
End Sub

このページのトップへ移動します。 7.指定の日付データから年月日を個別に取得する

Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
'指定の日付データから年月日を個別に取得する
    TextBox1.Text = "指定の日付データから年月日を個別に取得する" & vbCrLf
    Dim dt As System.DateTime = sysDT.Now
    TextBox1.Text &= String.Format("dt = sysDT.Now = {0}", dt) & vbCrLf
    TextBox1.Text &= String.Format("dt.Year        = {0}", dt.Year) & vbCrLf
    TextBox1.Text &= String.Format("dt.Month       = {0}", dt.Month) & vbCrLf
    TextBox1.Text &= String.Format("dt.Day         = {0}", dt.Day) & vbCrLf

'上記実行結果
'dt = sysDT.Now = 2014/05/09 10:52:31
'dt.Year        = 2014
'dt.Month       = 5
'dt.Day         = 9
End Sub

このページのトップへ移動します。 8.指定の日付データから時分秒を個別に取得する

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
'指定の日付データから時分秒を個別に取得する
    TextBox1.Text = "指定の日付データから時分秒を個別に取得する" & vbCrLf
    Dim dt As System.DateTime = sysDT.Now
    TextBox1.Text &= String.Format("dt = sysDT.Now = {0}", dt) & vbCrLf
    TextBox1.Text &= String.Format("dt.Hour        = {0}", dt.Hour) & vbCrLf
    TextBox1.Text &= String.Format("dt.Minute      = {0}", dt.Minute) & vbCrLf
    TextBox1.Text &= String.Format("dt.Second      = {0}", dt.Second) & vbCrLf

'上記実行結果
'dt = sysDT.Now = 2014/05/09 10:57:08
'dt.Hour        = 10
'dt.Minute      = 57
'dt.Second      = 8
End Sub

このページのトップへ移動します。 9.月のデータを1月のように月を含んで取得

Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
'月のデータを1月のように月を含んで取得
    TextBox1.Text = "月のデータを1月のように月を含んで取得" & vbCrLf
    Dim dt As System.DateTime = sysDT.Now
    TextBox1.Text &= String.Format("dt = sysDT.Now            = {0}", sysDT.Now) & vbCrLf
    TextBox1.Text &= String.Format("dt.Month.ToString(""00月"") = {0}", dt.Month.ToString("00月")) & vbCrLf
    TextBox1.Text &= String.Format("dt.ToString(""MMMM"")       =  {0}", dt.ToString("MMMM")) & vbCrLf
    TextBox1.Text &= String.Format("dt.ToString(""MM月"")       = {0}", dt.ToString("MM月")) & vbCrLf

'上記実行結果
'dt = sysDT.Now            = 2014/05/10 16:39:37
'dt.Month.ToString("00月") = 05月
'dt.ToString("MMMM")       =  5月
'dt.ToString("MM月")       = 05月
End Sub

このページのトップへ移動します。 10.指定月の第一指定曜日の日付を取得する

Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
'指定月の第一指定曜日の日付を取得する
    TextBox1.Text = "指定月の第一指定曜日の日付を取得する" & vbCrLf
    Dim dt As System.DateTime = CDate("2014/10/01")
    TextBox1.Text &= String.Format("dt = CDate(""2014/10/01"")  = {0}", dt) & vbCrLf
    TextBox1.Text &= String.Format("第一月曜日 = {0}日", ((9 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1) & vbCrLf
    TextBox1.Text &= String.Format("第二月曜日 = {0}日", ((9 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 8) & vbCrLf
    TextBox1.Text &= String.Format("第三月曜日 = {0}日", ((9 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 15) & vbCrLf
    TextBox1.Text &= vbCrLf
    TextBox1.Text &= String.Format("第一日曜日 = {0}日", ((8 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1) & vbCrLf
    TextBox1.Text &= String.Format("第一月曜日 = {0}日", ((9 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1) & vbCrLf
    TextBox1.Text &= String.Format("第一火曜日 = {0}日", ((10 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1) & vbCrLf
    TextBox1.Text &= String.Format("第一水曜日 = {0}日", ((11 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1) & vbCrLf
    TextBox1.Text &= String.Format("第一木曜日 = {0}日", ((12 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1) & vbCrLf
    TextBox1.Text &= String.Format("第一金曜日 = {0}日", ((13 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1) & vbCrLf
    TextBox1.Text &= String.Format("第一土曜日 = {0}日", ((14 - (CInt(dt.DayOfWeek) + 1)) Mod 7) + 1) & vbCrLf

'上記実行結果
'dt = CDate("2014/10/01")  = 2014/10/01 0:00:00
'第一月曜日 = 6日
'第二月曜日 = 13日
'第三月曜日 = 20日

'第一日曜日 = 5日
'第一月曜日 = 6日
'第一火曜日 = 7日
'第一水曜日 = 1日
'第一木曜日 = 2日
'第一金曜日 = 3日
'第一土曜日 = 4日
End Sub

このページのトップへ移動します。 11.指定月の指定週の指定曜日は何日かを求める関数の使用例 

''' <summary>
''' 指定月の指定週の指定曜日は何日かを求める関数
''' </summary>
''' <param name="MyDate">求める年月日 例、2014/10/01</param>
''' <param name="Week">求める曜日 例、DayOfWeek.Monday </param>
''' <param name="No">求める週 例、2 (第二週)</param>
''' <returns>関数が成功すると、指定の週の指定曜日の日にち
'''      関数が失敗すると、-1 が返ります</returns>
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 Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
'指定月の指定週の指定曜日は何日かを求める(当月の第二月曜日は何日かを求める)
    TextBox1.Text = "指定月の指定週の指定曜日は何日かを求める" & vbCrLf
    TextBox1.Text &= String.Format("GetFirstWeekDay(Now), DayOfWeek.Monday, 2)= {0}", _
                                    GetFirstWeekDay(Now, DayOfWeek.Monday, 2)) & vbCrLf

'上記実行結果
'GetFirstWeekDay(Now), DayOfWeek.Monday, 2)= 12
End Sub

このページのトップへ移動します。 12.今年のクリスマスイブは何曜日?

Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
'今年のクリスマスイブは何曜日(月日を固定してシステム日付を取得)      
    TextBox1.Text = "今年のクリスマスイブは何曜日" & vbCrLf
    TextBox1.Text &= String.Format("CDate(sysDT.Now.ToString(""yyyy/12/24"")).ToString(""dddd"") = {0}", _
                                    CDate(sysDT.Now.ToString("yyyy/12/24")).ToString("dddd")) & vbCrLf

'上記実行結果
'CDate(sysDT.Now.ToString("yyyy/12/24")).ToString("dddd") = 水曜日
End Sub

このページのトップへ移動します。 13.1月1日からの通算日を取得(1〜366)

Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
'1月1日からの通算日を取得(1〜366)
    TextBox1.Text = "1月1日から本日までの日数を求める" & vbCrLf
    'DateTime.DayOfYear プロパティ
    'このインスタンスで表される年間積算日を取得します。
    TextBox1.Text &= String.Format("sysDT.Now.DayOfYear = {0}", sysDT.Now.DayOfYear) & vbCrLf

'上記実行結果
'sysDT.Now.DayOfYear = 130
End Sub

このページのトップへ移動します。 14.指定した日付に任意の日数を加算

Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
'指定した日付に任意の日数を加算
    TextBox1.Text = "指定した日付に任意の日数を加算" & vbCrLf
    TextBox1.Text &= String.Format("dt        = {0}", New System.DateTime(2012, 3, 1)) & vbCrLf
    Dim dt As New System.DateTime(2012, 3, 1)
    'このインスタンスの値に、指定した日数を加算します。(3月1日の1日前の日は)
    TextBox1.Text &= String.Format("dt.AddDays(-1)   = {0}", dt.AddDays(-1)) & vbCrLf
    '2012/03/01 の10日後は、
    TextBox1.Text &= String.Format("dt.AddDays(10)   = {0}", dt.AddDays(10)) & vbCrLf
    '2012/03/01 の13ヶ月後は、
    TextBox1.Text &= String.Format("dt.AddMonths(13) = {0}", dt.AddMonths(13)) & vbCrLf
    '2012/03/01 の4年後は、
    TextBox1.Text &= String.Format("dt.AddMonths(4)  = {0}", dt.AddYears(4)) & vbCrLf

'上記実行結果
'dt        = 2012/03/01 0:00:00
'dt.AddDays(-1)   = 2012/02/29 0:00:00
'dt.AddDays(10)   = 2012/03/11 0:00:00
'dt.AddMonths(13) = 2013/04/01 0:00:00
'dt.AddMonths(4)  = 2016/03/01 0:00:00
End Sub

このページのトップへ移動します。 15.愛子様が生まれた日からの日数を求める

Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
'愛子様が生まれた日からの日数を求める
    TextBox1.Text = "愛子様が生まれた日からの日数を求める" & vbCrLf
    Dim dt1 As System.DateTime = sysDT.Parse("2001/12/01")
    Dim dt2 As System.DateTime = sysDT.Now

    TextBox1.Text &= String.Format("dt1                   = {0}", sysDT.Parse("2001/12/01 14:43:00")) & vbCrLf
    TextBox1.Text &= String.Format("dt2                   = {0}", sysDT.Now) & vbCrLf

    'DateTime.Subtract メソッド
    'このインスタンスから指定した時刻または存続時間を減算します。
    TextBox1.Text &= String.Format("dt2.Subtract(dt1).Days       = {0:#,0}日", dt2.Subtract(dt1).Days) & vbCrLf
    TextBox1.Text &= String.Format("dt2.Subtract(dt1).TotalHours = {0:#,0.0}時間", dt2.Subtract(dt1).TotalHours) & vbCrLf
'上記実行結果
'dt1                   = 2001/12/01 14:43:00
'dt2                   = 2014/05/10 16:53:20
'dt2.Subtract(dt1).Days       = 4,543日
'dt2.Subtract(dt1).TotalHours = 109,048.9時間
End Sub

このページのトップへ移動します。 16.プログラム等の処理時間を計測する(3方法)

Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
'処理時間を計測
    TextBox1.Text = "処理時間を計測" & vbCrLf

    Dim sTime0 As DateTime = Now
    Dim sTime1 As Single = Environment.TickCount
    'System.Diagnostics.Stopwatch クラス を使った方法
    Dim stopWatch As New Stopwatch()
    stopWatch.Start()

    For i As Integer = 0 To 5000
        Debug.WriteLine(i)
    Next i

    Dim eTime0 As DateTime = Now
    Dim eTime1 As Single = Environment.TickCount
    stopWatch.Stop()

    TextBox1.Text &= String.Format("eTime0.Subtract(sTime0).TotalSeconds = {0:#,0.000} 秒かかりました。", _
                                                                eTime0.Subtract(sTime0).TotalSeconds) & vbCrLf
    TextBox1.Text &= String.Format("(eTime1 - sTime1) / 1000             = {0:#,0.000} 秒かかりました。", _
                                                                (eTime1 - sTime1) / 1000) & vbCrLf
    TextBox1.Text &= String.Format("Stopwatch.ElapsedMilliseconds / 1000 = {0:#,0.000} 秒かかりました。", _
                                                                stopWatch.ElapsedMilliseconds / 1000) & vbCrLf
    TextBox1.Text &= vbCrLf
    TextBox1.Text &= "何回かクリックして計りなおして見て下さい。"
    'どちらの方法も殆ど変りません。(誤差の範囲内)

'上記実行結果
'eTime0.Subtract(sTime0).TotalSeconds = 1.064 秒かかりました。
'(eTime1 - sTime1) / 1000             = 1.064 秒かかりました。
'Stopwatch.ElapsedMilliseconds / 1000 = 1.068 秒かかりました。
End Sub

このページのトップへ移動します。 17.西暦から和暦に変換 

Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click
'西暦から和暦に変換
    TextBox1.Text = "西暦から和暦に変換" & vbCrLf
    Dim jpCalendar As New System.Globalization.CultureInfo("ja")
    jpCalendar.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar
    Dim dt As System.DateTime = sysDT.Now
    TextBox1.Text &= String.Format("dt                                 = {0}", sysDT.Now) & vbCrLf
    TextBox1.Text &= String.Format("dt.ToString(""gyy年MM月dd日"", jpCalendar) = {0}", _
                                                      dt.ToString("gyy年MM月dd日", jpCalendar)) & vbCrLf

'上記実行結果
'dt                                 = 2014/05/10 17:59:46
'dt.ToString("gyy年MM月dd日", jpCalendar) = 平成26年05月10日
End Sub

このページのトップへ移動します。 18.和暦から西暦に変換

Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click
'和暦から西暦に変換
    Dim jpCalendar As New System.Globalization.CultureInfo("ja")
    jpCalendar.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar
    Dim dt As System.DateTime = sysDT.Now
'------------------------------------------------------------------------------------
    TextBox1.Text = "和暦から西暦に変換" & vbCrLf
    dt = CDate("平成26年05月10日")
    dt = CDate(dt.ToString("gyy年MM月dd日", jpCalendar))
    TextBox1.Text &= String.Format("dt                      = {0}", dt.ToString("gyy年MM月dd日", jpCalendar)) & vbCrLf
    TextBox1.Text &= String.Format("dt.ToString(""yyyy年MM月dd日"") = {0}", dt.ToString("yyyy年MM月dd日")) & vbCrLf

'上記実行結果
'dt                      = 平成26年05月10日
'dt.ToString("yyyy年MM月dd日") = 2014年05月10日
End Sub

このページのトップへ移動します。 19.文字列(数字)を日付型へ変換

Private Sub Button20_Click(sender As Object, e As EventArgs) Handles Button20.Click
'文字列(数字)を日付型へ変換
    TextBox1.Text = "文字列(数字)を日付型へ変換" & vbCrLf
    TextBox1.Text &= String.Format("Date.ParseExact(""20140510"", ""yyyyMMdd"", Globalization.CultureInfo.InvariantCulture) = {0}", _
                                Date.ParseExact("20140510", "yyyyMMdd", Globalization.CultureInfo.InvariantCulture)) & vbCrLf
    TextBox1.Text &= String.Format("CDate(Format(CDbl(""20140510""), ""0000\/00\/00"") = {0}", _
                                                        CDate(Format(CDbl("20140510"), "0000\/00\/00"))) & vbCrLf
    TextBox1.Text &= String.Format("CDate(Format(20140510, ""0000\/00\/00""))        = {0}", _
                                                     CDate(Format(20140510, "0000\/00\/00"))) & vbCrLf

'上記実行結果
'Date.ParseExact("20140510", "yyyyMMdd", Globalization.CultureInfo.InvariantCulture) = 2014/05/10 0:00:00
'CDate(Format(CDbl("20140510"), "0000\/00\/00") = 2014/05/10 0:00:00
'CDate(Format(20140510, "0000\/00\/00"))        = 2014/05/10 0:00:00
End Sub

このページのトップへ移動します。 20.日付型の文字列をDate型の値に変換する

Private Sub Button21_Click(sender As Object, e As EventArgs) Handles Button21.Click
'日付型の文字列をDate型の値に変換する
    TextBox1.Text = "文字列(数字)を日付型へ変換" & vbCrLf
    '指定した文字列形式の日付と時刻を等価の DateTime の値に変換します。
    Dim strMyDate As String = "2014年05月10日"
    TextBox1.Text &= String.Format("strMyDate              = {0}", "2014年05月10日") & vbCrLf
    TextBox1.Text &= String.Format("sysDT.Parse(strMyDate)            = {0}", sysDT.Parse(strMyDate)) & vbCrLf
    TextBox1.Text &= String.Format("CType(strMyDate, System.DateTime) = {0}", CType(strMyDate, System.DateTime)) & vbCrLf

'上記実行結果
'strMyDate              = 2014年05月10日
'sysDT.Parse(strMyDate)            = 2014/05/10 0:00:00
'CType(strMyDate, System.DateTime) = 2014/05/10 0:00:00
End Sub

このページのトップへ移動します。 21.文字列の時刻情報を日付型の値に変換する

Private Sub Button22_Click(sender As Object, e As EventArgs) Handles Button22.Click
'文字列の時刻情報を日付型の時刻に変換する
    TextBox1.Text = "文字列の時刻情報を日付型の時刻に変換する" & vbCrLf
    '指定した文字列形式の日付と時刻を等価の DateTime の値に変換します。
    Dim strMyTime As String = "14時25分30秒"
    TextBox1.Text &= String.Format("strMyTime                 = {0}", "14時25分30秒") & vbCrLf
    TextBox1.Text &= String.Format("sysDT.Parse(strMyTime)               = {0}", sysDT.Parse(strMyTime)) & vbCrLf
    TextBox1.Text &= String.Format("sysDT.Parse(strMyTime).ToString(""T"") = {0}", sysDT.Parse(strMyTime).ToString("T")) & vbCrLf

'上記実行結果
'strMyTime                 = 14時25分30秒
'sysDT.Parse(strMyTime)               = 2014/05/10 14:25:30
'sysDT.Parse(strMyTime).ToString("T") = 14:25:30
End Sub

このページのトップへ移動します。 22.年、月、日を表す日付型の値に変換

Private Sub Button23_Click(sender As Object, e As EventArgs) Handles Button23.Click
'年、月、日を表す日付型の値に変換
    TextBox1.Text = "年、月、日を表す日付型の値に変換" & vbCrLf
    Dim myDateTime As New System.DateTime(2014, 5, 10)
    TextBox1.Text &= String.Format("myDateTime = New System.DateTime(2014, 5, 10) = {0}", New System.DateTime(2014, 5, 10)) & vbCrLf
    TextBox1.Text &= String.Format("myDateTime.ToString(""d"")                      = {0}", myDateTime.ToString("d")) & vbCrLf

'上記実行結果
'myDateTime = New System.DateTime(2014, 5, 10) = 2014/05/10 0:00:00
'myDateTime.ToString("d")                      = 2014/05/10
End Sub

このページのトップへ移動します。 23.時、分、秒を表す日付型の値に変換 

Private Sub Button24_Click(sender As Object, e As EventArgs) Handles Button24.Click
'時、分、秒を表す日付型の値に変換
    TextBox1.Text = "時、分、秒を表す日付型の値に変換" & vbCrLf
    Dim dt As New System.DateTime(2014, 5, 15, 14, 25, 30)
    TextBox1.Text &= String.Format("dt = New System.DateTime(2014, 5, 15, 14, 25, 30) = {0}", _
                                                                    New System.DateTime(2014, 5, 15, 14, 25, 30)) & vbCrLf
    TextBox1.Text &= String.Format("dt.ToString(""T"")                                  = {0}", dt.ToString("T")) & vbCrLf

'上記実行結果
'dt = New System.DateTime(2014, 5, 15, 14, 25, 30) = 2014/05/15 14:25:30
'dt.ToString("T")                                  = 14:25:30
End Sub

このページのトップへ移動します。 24.コントロールパネルの地域の設定に影響されない日時の取得

Private Sub Button25_Click(sender As Object, e As EventArgs) Handles Button25.Click
'コントロールパネルの地域の設定に影響されない日時の取得
    TextBox1.Text = "コントロールパネルの地域の設定に影響されない日時の取得" & vbCrLf
    TextBox1.Text &= String.Format("現在のカルチャ                = {0}", _
                                                            Threading.Thread.CurrentThread.CurrentCulture.Name) & vbCrLf
    TextBox1.Text &= String.Format("現在のカルチャでの日時の取得  = {0}", sysDT.Now) & vbCrLf
    TextBox1.Text &= String.Format("Format(sysDT.Now, ""yyyy/MM/dd"") = {0}", Format(sysDT.Now, "yyyy/MM/dd")) & vbCrLf
    TextBox1.Text &= String.Format("Now.ToString(""F"")               = {0}", Now.ToString("F")) & vbCrLf

    TextBox1.Text &= vbCrLf

    TextBox1.Text &= "カルチャを CultureInfo(""ja-JP"") に変更(地域の設定による)" & vbCrLf
    'このスレッドの日付データを短い日付形式(日本語)でコントロールパネルの設定に依存
    System.Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("ja-JP")
    TextBox1.Text &= String.Format("現在のカルチャでの日時の取得  = {0}", sysDT.Now) & vbCrLf
    TextBox1.Text &= String.Format("Format(sysDT.Now, ""yyyy/MM/dd"") = {0}", Format(sysDT.Now, "yyyy/MM/dd")) & vbCrLf
    TextBox1.Text &= String.Format("Now.ToString(""F"")               = {0}", Now.ToString("F")) & vbCrLf
    TextBox1.Text &= vbCrLf

    TextBox1.Text &= "カルチャを CultureInfo(""ja"") に変更(地域の設定に影響されない)" & vbCrLf
    System.Threading.Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("ja")
    TextBox1.Text &= String.Format("現在のカルチャでの日時の取得  = {0}", sysDT.Now) & vbCrLf
    TextBox1.Text &= String.Format("Format(sysDT.Now, ""yyyy/MM/dd"") = {0}", Format(sysDT.Now, "yyyy/MM/dd")) & vbCrLf
    TextBox1.Text &= String.Format("Now.ToString(""F"")               = {0}", Now.ToString("F")) & vbCrLf

'上記実行結果
'現在のカルチャ                = en-US
'現在のカルチャでの日時の取得  = 5/11/2014 6:37:42 AM
'Format(sysDT.Now, "yyyy/MM/dd") = 2014/05/11
'Now.ToString("F")               = Sunday, May 11, 2014 6:37:42 AM

'カルチャを CultureInfo("ja-JP") に変更(地域の設定による)
'現在のカルチャでの日時の取得  = 2014-05-11 06:37:42
'Format(sysDT.Now, "yyyy/MM/dd") = 2014-05-11
'Now.ToString("F")               = 2014年05月11日 日曜日 06:37:42

'カルチャを CultureInfo("ja") に変更(地域の設定に影響されない)
'現在のカルチャでの日時の取得  = 2014/05/11 6:37:42
'Format(sysDT.Now, "yyyy/MM/dd") = 2014/05/11
'Now.ToString("F")               = 2014年5月11日 6:37:42

'------------------------------------------------------------------------------------------------
'※ コントロールパネルの地域の設定で、色々変更して試して見て下さい。
'   ご自分の取得したい形式を Form1_Load イベントに書いておくとユーザーによる変更に
'  影響されずに取得する事ができます。
End Sub

このページのトップへ移動します。 25.Date 型の型変換時のエラーチェック

Private Sub Button26_Click(sender As Object, e As EventArgs) Handles Button26.Click
'Date 型の型変換時のエラーチェック
    'IsDate メソッド を使ってチェックするのが簡単です。(データ型の場合 = True それ以外は、False を返す )
    '又は、TryParse メソッドを使用、TryParse メソッドの使用例を参照して下さい。

    TextBox1.Text = "Date 型の型変換時のエラーチェック" & vbCrLf
    TextBox1.Text &= vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2012/02/29""), ""OK"", ""NG"")              = {0}", _
                                                            IIf(IsDate("2012/02/29"), "OK", "NG")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2014/02/29""), ""OK"", ""NG"")              = {0}", _
                                                            IIf(IsDate("2014/02/29"), "OK", "NG")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2014-02-28""), ""OK"", ""NG"")              = {0}", _
                                                            IIf(IsDate("2014-02-28"), "OK", "NG")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2014, 5, 15""), ""OK"", ""NG"")             = {0}", _
                                                            IIf(IsDate("2014, 5, 15"), "OK", "NG")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2014, 5, 15, 14, 25, 30""), ""OK"", ""NG"") = {0}", _
                                                            IIf(IsDate("2014, 5, 15, 14, 25, 30"), "OK", "NG")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2014, 5, 15 14: 25:30""), ""OK"", ""NG"")   = {0}", _
                                                            IIf(IsDate("2014, 5, 15 14: 25:30"), "OK", "NG")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2014年02月28日""), ""OK"", ""NG"")          = {0}", _
                                                            IIf(IsDate("2014年02月28日"), "OK", "NG")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2014/02/28 20:15:00""), ""OK"", ""NG"")     = {0}", _
                                                            IIf(IsDate("2014/02/28 20:15:00"), "OK", "NG")) & vbCrLf
    TextBox1.Text &= String.Format("IIf(IsDate(""2014/02/28 20:15:60""), ""OK"", ""NG"")     = {0}", _
                                                            IIf(IsDate("2014/02/28 20:15:60"), "OK", "NG")) & vbCrLf

    TextBox1.Text &= vbCrLf

'上記実行結果

'Date 型の型変換時のエラーチェック

'IIf(IsDate("2012/02/29"), "OK", "NG")       = OK
'IIf(IsDate("2014/02/29"), "OK", "NG")       = NG
'IIf(IsDate("2014-02-28"), "OK", "NG")       = OK
'IIf(IsDate("2014, 5, 15"), "OK", "NG")       = OK
'IIf(IsDate("2014, 5, 15, 14, 25, 30"), "OK", "NG") = NG
'IIf(IsDate("2014, 5, 15 14: 25:30"), "OK", "NG")  = OK
'IIf(IsDate("2014年02月28日"), "OK", "NG")     = OK
'IIf(IsDate("2014/02/28 20:15:00"), "OK", "NG")   = OK
'IIf(IsDate("2014/02/28 20:15:60"), "OK", "NG")   = NG


'数字のデータを日付型に変換する場合は、下記のように求める桁数等と日付の範囲の両方をチェックする
    Dim dDT As Double = 20140229
    If CStr(dDT).Length <> 8 Then
        MessageBox.Show("エラー1")
        Exit Sub
    End If
    Dim s1 As String = Format(dDT, "0000\/00\/00")
    If IsDate(s1) = False Then
        MessageBox.Show("エラー2")
    End If
End Sub

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


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


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


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


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


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


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


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


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


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


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


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





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