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

1.1月1日からの通算日を取得(1〜366)
2.月のデータを1月のように月を含んで取得
3.日付の文字列をDate型の値に変換する
4.文字列の時刻情報を日付型の値に変換する
5.年、月、日を表す日付型の値に変換
6.時、分、秒を表す日付型の値に変換
7.指定した日付に任意の日数を加算
8.愛子様が生まれた日からの日数を求める
9.西暦から和暦に変換
10.和暦から西暦に変換
11.処理時間を計測
使用コントロール Button1 〜 Button10 
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
 
1.1月1日からの通算日を取得(1〜366)
 
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
'1月1日からの通算日を取得(1〜366)
    'DateTime.DayOfYear プロパティ
    'このインスタンスで表される年間積算日を取得します。
    Dim dt As System.DateTime = System.DateTime.Now
    Debug.WriteLine(dt.DayOfYear)   '結果  279

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    'DatePart 関数
    '特定の日付型の値の指定コンポーネントを含む整数型の値を返します。
    Debug.WriteLine(DatePart(DateInterval.DayOfYear, System.DateTime.Now))  '結果  279
End Sub


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

2.月のデータを1月のように月を含んで取得
 
Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button2.Click
'指定した月の名前を含む文字列型の値を取得
    'DateTime.Month プロパティ
    'このインスタンスで表される日付の月の部分を取得します。
    Dim dt As System.DateTime = System.DateTime.Now
    Debug.WriteLine(dt.Month.ToString("00月"))  '結果  10月

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    Debug.WriteLine(MonthName(Month(Now)))  '結果 10月
End Sub
 
3.日付の文字列をDate型の値に変換する
 
Private Sub Button3_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button3.Click
'日付の文字列をDate型の値に変換する
    'DateTime.Parse メソッド
    '指定した文字列形式の日付と時刻を等価の DateTime の値に変換します。
    Dim strMyDate As String = "2005年10月6日"
    Debug.WriteLine(System.DateTime.Parse(strMyDate)) '結果  2005/10/06 00:00:0
    MessageBox.Show(System.DateTime.Parse(strMyDate)) '結果  2005/10/06 (表示結果が違う)

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------

    'DateValue 関数
    '時刻情報が午前 0 時 (00:00:00) に設定された、文字列で表される
    '日付情報を含む日付型の値を返します。
    Debug.WriteLine(DateValue("2005年10月6日")) '結果  2005/10/06 00:00:0
    MessageBox.Show(DateValue("2005年10月6日")) '結果  2005/10/06 (表示結果が違う)
End Sub

4.文字列の時刻情報を日付型の値に変換する
 
Private Sub Button4_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button4.Click
'文字列で表される時刻情報を含む日付型の値に変換する
    'DateTime.Parse メソッド
    '指定した文字列形式の日付と時刻を等価の DateTime の値に変換します。
    Dim strMyTime As String = "14時25分30秒"
    Debug.WriteLine(System.DateTime.Parse(strMyTime))   '結果 2005/10/06 14:25:30

    Dim dt As System.DateTime = System.DateTime.Parse(strMyTime)
    Debug.WriteLine(dt.ToString("T"))                   '結果  14:25:30

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    'TimeValue 関数
    '日付情報が 1 年 1 月 1 日に設定された、文字列で表される
    '時刻情報を含む日付型の値を返します。
    Debug.WriteLine(TimeValue("14時25分30秒"))  '結果  0001/01/01 14:25:30
End Sub

 
5.年、月、日を表す日付型の値に変換
 
Private Sub Button5_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button5.Click
'年、月、日を表す日付型の値に変換
    'DateTime コンストラクター
    'DateTime 構造体の新しいインスタンスを初期化します。
    Dim myDateTime As New System.DateTime(2005, 10, 6)
    Debug.WriteLine(myDateTime.ToString("d"))       '結果  2004/04/01

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    'DateSerial 関数
    '指定の年、月、および日を表す日付型の値に変換する
    Debug.WriteLine(DateSerial(2005, 10, 6))     '結果  2005/10/06 00:00:00
End Sub
 
6.時、分、秒を表す日付型の値に変換
 
Private Sub Button6_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button6.Click
'時、分、秒を表す日付型の値に変換
    'DateTime コンストラクター
    'DateTime 構造体の新しいインスタンスを初期化します。
    Dim dt As New System.DateTime(2005, 10, 6, 14, 25, 30)
    Debug.WriteLine(dt.ToString("T"))       '結果  14:25:30

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    'TimeSerial 関数
    '指定の時、分、および秒を表す日付型の値に変換する
    Debug.WriteLine(TimeSerial(14, 25, 30)) '結果  0001/01/01 14:25:30
End Sub

7.指定した日付に任意の日数を加算
 
Private Sub Button7_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button7.Click
'指定した日付に任意の日数を加算
    'DateTime.AddDays メソッド
    'このインスタンスの値に、指定した日数を加算します。
    Dim dt As New System.DateTime(2004, 3, 1)
    Debug.WriteLine(dt.AddDays(-1))         '結果  2004/02/29 0:00:00
    'DateTime.AddMonths メソッド
    'このインスタンスの値に指定した月数を加算します。
    Debug.WriteLine(dt.AddMonths(13))       '結果  2005/04/01 0:00:00

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    'DateAdd 関数
    '指定した日付に任意の日数を加減算する(3月1日の1日前の日は)
    Debug.WriteLine(DateAdd(DateInterval.Day, -1, DateValue("2004年3月1日")))
            '結果  2004/02/29 0:00:00
End Sub
 
8.愛子様が生まれた日からの日数を求める
 
Private Sub Button8_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button8.Click
'愛子様が生まれた日からの日数を求める
    'DateTime.Subtract メソッド
    'このインスタンスから指定した時刻または存続時間を減算します。
    Dim dt1 As System.DateTime = System.DateTime.Parse("2001/12/01")
    Dim dt2 As System.DateTime = System.DateTime.Now
    Debug.WriteLine(dt2.Subtract(dt1).Days)         '結果 1405
    Debug.WriteLine(dt2.Subtract(dt1).TotalHours)   '結果 33730.9736328125

'------ 名前空間 : Microsoft.VisualBasic の機能での同様の操作例 ----------
    'DateDiff 関数
    '2 つの日付型 (Date) 値の間の時間間隔数を指定する長整数型 (Long) の値を返します
    Debug.WriteLine(DateDiff(DateInterval.Day, DateValue("2001/12/1"), Now)) '結果  1405
End Sub
 
9.西暦から和暦に変換
 
Private Sub Button9_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button9.Click
'西暦から和暦に変換
    Dim myCI As New System.Globalization.CultureInfo("ja-JP", True)
    myCI.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar
    Dim dt As System.DateTime = CDate("2005年10月06日")
    Debug.WriteLine(dt.ToString("gyy年MM月dd日", myCI)) '結果  平成17年10月06日
End Sub

VB6.0 で使用できた  Format$(Date, "gggee年mm月dd日") '平成14年01月07日 は、.NETでは使用できません
 
10.和暦から西暦に変換
 
Private Sub Button10_Click(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles Button10.Click
'和暦から西暦に変換
    Dim dt As System.DateTime = CDate("平成17年10月06日")
    Debug.WriteLine(dt.ToString("yyyy年MM月dd日"))  '結果  2005年10月06日
End Sub

11.処理時間を計測
 
Private Sub Button11_Click(ByVal sender As System.Object, _
                           
ByVal e As System.EventArgs) Handles Button11.Click
'処理時間を計測
   
Dim sTime0 As DateTime = Now
   
Dim sTime1 As Single = Environment.TickCount

   
For i As Integer = 0 To 1000
        Debug.WriteLine(i)
   
Next i
   
Dim eTime0 As DateTime = Now
   
Dim eTime1 As Single = Environment.TickCount

    MessageBox.Show(eTime0.Subtract(sTime0).TotalSeconds & " 秒かかりました。")
    MessageBox.Show(((eTime1 - sTime1) / 1000) & " 秒かかりました。")
    'どちらの方法も殆ど変りません。(誤差の範囲内)
End Sub

メニューの関数・メソッド等の中の[日付・時刻に関する関数(Microsoft.VisualBasic)の使用例] [日付・時刻に関するメソッド(DateTime 構造体)等の使用例その1] [日付・時刻に関するメソッド(DateTime 構造体)等の使用例その2] [日付・時刻に関する書式設定関係のメソッド等の使用例] もご覧下さい。





2004/05/09
2005/10/07


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