データ型の中で 日付型(Date) はよく使用するもののひとつです。 VB.NETの中に日付のデータ型として、 Date と DateTime がありますが、 どの様な違いがあるのか疑問に思われるでしょうが、以下のMSDNの説明によれば同じものの様です。
⇒データ型の概要 (Visual Basic)
日付型として同じであれば、どちらを使ってもよいのですが、プログラムの中では一つに統一した方が良いと思います。 (私としては DateTime で良いと思います)
以下のソースは抜粋ですが、どちらも同じことをを処理しています。
日付型データの使い方1
Dim strWK As String = ""
Dim dateWK As Date
'Date型
dateWK = New Date(2018, 1, 20, 15, 17, 30)
strWK = dateWK.ToString("yyyy/MM/dd HH:mm:ss") '日付型を書式で変換
Console.WriteLine("dateWK.ToString(""yyyy/MM/dd HH:mm:ss"") = " & strWK)
'DateTime型
Dim dateTimeWK As DateTime
dateTimeWK = New DateTime(2018, 1, 20, 15, 17, 30)
strWK = dateTimeWK.ToString("yyyy/MM/dd HH:mm:ss")
Console.WriteLine("dateTimeWK.ToString(""yyyy/MM/dd HH:mm:ss"") = " & strWK)
ソースの中で、ToString を使用して日付型データから書式に従って文字列に変換しています。 今回の例では書式を"yyyy/MM/dd HH:mm:ss"を使っていますが、通常はこの様な感じで十分かと思います。
尚、この書式には各種ありますが代表的なものを以下に示します。
| 書式指定子 | 説明 | 使用例 |
|---|---|---|
| yy | 0埋め下2桁の年 (00 ~ 99) | 2009-06-01 13:45:30 ⇒ "09" |
| yyyy | 0埋め4桁の年 (0001 ~ 9999) | 2009-06-01 13:45:30 ⇒ "2009" |
| M | 月 (1 ~ 12) | 2009-06-01 13:45:30 ⇒ "6" |
| MM | 月:1桁の場合先頭0付 (01 ~ 12) | 2009-06-01 13:45:30 ⇒ "06" |
| d | 月の日にち (1 ~ 31) | 2009-06-01 13:45:30 ⇒ "1" |
| dd | 月の日にち:1桁の場合先頭0付 (01 ~ 31) | 2009-06-01 13:45:30 ⇒ "01" |
| h | 12時間形式の時間 (1 ~ 12) | 2009-06-01 13:45:30 ⇒ "1" |
| hh | 12時間形式の時間:1桁の場合先頭0付 (01 ~ 12) | 2009-06-01 13:45:30 ⇒ "1" |
| H | 24時間形式の時間 (0 ~ 23) | 2009-06-01 03:45:30 ⇒ "3" |
| HH | 24時間形式の時間:1桁の場合先頭0付 (00 ~ 23) | 2009-06-01 13:45:30 ⇒ "13" |
| mm | 分:1桁の場合先頭0付 (00 ~ 59) | 2009-06-01 13:05:30 ⇒ "05" |
| ss | 秒:1桁の場合先頭0付 (00 ~ 59) | 2009-06-01 13:05:04 ⇒ "04" |
| ddd | 曜日の省略名 | 2009-06-01 13:45:30 ⇒ "月" |
| dddd | 曜日の完全名 | 2009-06-01 13:45:30 ⇒ "月曜日" |
次に日付型の計算について説明します。 いろんなところで日付に対して翌日、前日、前月、翌月、前年、翌年などの計算が必要になりますが、 日付型のメソッドとしてそれらを計算できるものが揃っています。 私がよく使うものを以下に示します。
| メソッド | 書式 | 説明 |
|---|---|---|
| AddDays | AddDays (value As Double) As DateTime value 引数は、正または負のどちらの場合もあります |
指定された日数を加算した新しい DateTime を返します |
| AddMonths | AddMonths (value As Integer) As DateTime value 引数は、正または負のどちらの場合もあります |
指定された月数を加算した新しい DateTime を返します |
| AddYears | AddYears (value As Integer) As DateTime value 引数は、正または負のどちらの場合もあります |
指定された年数を加算した新しい DateTime を返します |
日付型データの使い方2
'日付の設定
dateTimeWK = New DateTime(2018, 1, 25)
'日数+1
dateTimeWK = dateTimeWK.AddDays(1)
Console.WriteLine("日数+1 = " & dateTimeWK.ToString("yyyy/MM/dd HH:mm:ss"))
'日数-1
dateTimeWK = dateTimeWK.AddDays(-1)
Console.WriteLine("日数-1 = " & dateTimeWK.ToString("yyyy/MM/dd HH:mm:ss"))
'月数+1
dateTimeWK = dateTimeWK.AddMonths(1)
Console.WriteLine("月数+1 = " & dateTimeWK.ToString("yyyy/MM/dd HH:mm:ss"))
'月数-1
dateTimeWK = dateTimeWK.AddMonths(-1)
Console.WriteLine("月数-1 = " & dateTimeWK.ToString("yyyy/MM/dd HH:mm:ss"))
'年数+1
dateTimeWK = dateTimeWK.AddYears(1)
Console.WriteLine("年数+1 = " & dateTimeWK.ToString("yyyy/MM/dd HH:mm:ss"))
'年数-1
dateTimeWK = dateTimeWK.AddYears(-1)
Console.WriteLine("年数-1 = " & dateTimeWK.ToString("yyyy/MM/dd HH:mm:ss"))
上記の処理を実行すると以下の様な表示が、「出力」ウインドウに表示されます。
dateWK.ToString("yyyy/MM/dd HH:mm:ss") = 2018/01/20 15:17:30
dateTimeWK.ToString("yyyy/MM/dd HH:mm:ss") = 2018/01/20 15:17:30
日数+1 = 2018/01/26 00:00:00
日数-1 = 2018/01/25 00:00:00
月数+1 = 2018/02/25 00:00:00
月数-1 = 2018/01/25 00:00:00
年数+1 = 2019/01/25 00:00:00
年数-1 = 2018/01/25 00:00:00
関連する記事
⇒日付型データの使い方(月末、年末の日付取得)⇒日付型データの比較について
⇒文字列から数値型への変換(parse - tryparse)
⇒オブジェクト型から数値型への変換(TryParse)
PR
コメント