忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

日付型データの使い方

データ型の中で 日付型(Date) はよく使用するもののひとつです。 VB.NETの中に日付のデータ型として、 DateDateTime がありますが、 どの様な違いがあるのか疑問に思われるでしょうが、以下の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

コメント

コメントを書く