Web
Analytics

社畜ゲートウェイ

京成・京急を中心に取り上げる阪急ファンのブログです。日本一遅い速報を届けます。

MENU

【スポンサーリンク】

【VB.NET】yyyymmdd形式で日付を扱う(カスタム書式指定文字列)

【スポンサーリンク】

f:id:neko_britannia:20200615213413j:plain

日付を「20200101」(yyyymmdd形式)や「2020年01月01日02時03分04秒」(yyyy年MM月dd日hh時mm分ss秒形式)の様に扱う方法です。覚えれば簡単なのでサクッと覚えてしまいましょう。

日付をカスタム書式指定文字列で変換する

カスタム書式指定文字とは

MSDNに「カスタム書式指定文字」の説明がありますがサッパリな人が多いと思います。簡単に言えば「ToStringメソッドを使って、指定した書式で出力できる」ということです。0埋めや桁数、小数点を桁を合わせるなど、色んな場面で使用します。もちろん、日付もカスタム書式指定文字が使えます。

で、今回は日付のお話なので、例として実行ボタンを押すと日付が出て来るフォームを作りました。

f:id:neko_britannia:20200623204457j:plain

実際にソースを書いて確認してみましょう。

 

yyyyMMdd形式

日付によくある「yyyymmdd」という書式です。具体的には「20200101」となります。DateTime型の変数にDateTime.Nowを代入し、ToStringメソッドの引数に書式文字を入れます。

Private Sub cmdCreateDateTime1_Click(sender As Object, e As EventArgs) Handles cmdCreateDateTime1.Click
    Try
        'カスタム書式指定文字列を用いて日付時刻を出力
        Dim strOutPut As String = Nothing
        Dim objDateTime As DateTime = DateTime.Now

        'yyyyMMdd形式
        strOutPut = objDateTime.ToString("yyyyMMdd")
        MessageBox.Show(strOutPut, "yyyyMMdd形式")

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

実際に実行してみます。

f:id:neko_britannia:20200623204324j:plain

「20200623」と出てきました。「yyyymmdd」形式で出力されていますね。

 

yyyyMMddHHmmss形式

日付だけじゃ物足りない!秒まで欲しい!という場合は「yyyyMMddHHmmss」という書式です。

Private Sub cmdCreateDateTime1_Click(sender As Object, e As EventArgs) Handles cmdCreateDateTime1.Click
    Try
        'カスタム書式指定文字列を用いて日付時刻を出力
        Dim strOutPut As String = Nothing
        Dim objDateTime As DateTime = DateTime.Now

        'yyyyMMddHHmmss形式
        strOutPut = objDateTime.ToString("yyyyMMdd HHmmss")
        MessageBox.Show(strOutPut, "yyyyMMddHHmmss形式")

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

実際に実行してみます。

f:id:neko_britannia:20200623205623j:plain

時分秒まで出てきましたね。時分秒まで出しましたが、時分だけでいい場合は「yyyyMMddHHmm」として下さい。

【小技】年月日と時分秒の間にスペースを入れたい場合は、"yyyyMMdd HHmmss"と指定すれば、「20200101 010203」で扱えます。

 

yyyy/MM/dd HH:mm:ss形式

こちらも日付によくある形式で、スラッシュやコロンが入った形式です。「yyyy/MM/dd HH:mm:ss」と指定すると、「2020/01/02 03:04:05」となります。

Private Sub cmdCreateDateTime1_Click(sender As Object, e As EventArgs) Handles cmdCreateDateTime1.Click
    Try
        'カスタム書式指定文字列を用いて日付時刻を出力
        Dim strOutPut As String = Nothing
        Dim objDateTime As DateTime = DateTime.Now

        'yyyy/MM/dd HH:mm:ss形式
        strOutPut = objDateTime.ToString("yyyy/MM/dd HH:mm:ss")
        MessageBox.Show(strOutPut, "yyyy/MM/dd HH:mm:ss形式")

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

実際に実行してみます。

f:id:neko_britannia:20200623210023j:plain

スラッシュとコロンがついて表示されていますね。

 

yyyy年MM月dd日hh時mm分ss秒形式

いやいや「年月日」という文字も出したいんだ!という人は、「yyyy年MM月dd日hh時mm分ss秒」と指定しましょう。

Private Sub cmdCreateDateTime1_Click(sender As Object, e As EventArgs) Handles cmdCreateDateTime1.Click
    Try
        'カスタム書式指定文字列を用いて日付時刻を出力
        Dim strOutPut As String = Nothing
        Dim objDateTime As DateTime = DateTime.Now

        'yyyy年MM月dd日hh時mm分ss秒形式
        strOutPut = objDateTime.ToString("yyyy年MM月dd日hh時mm分ss秒")
        MessageBox.Show(strOutPut, "yyyy年MM月dd日hh時mm分ss秒形式")

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

実際に実行してみます。

f:id:neko_britannia:20200623210305j:plain

はい、「年月日時分秒」の文字がくっついてますね。

 

不要な0を表示させたくない場合

「yyyy年MM月dd日hh時mm分ss秒」形式で不要な0を表示させたくない場合があると思います。「2020年1月1日2時3分5秒」って出したいんだ!という人ですね。その場合、objDateTime.ToString("yyyy年MM月dd日hh時mm分ss秒")の部分をobjDateTime.ToString("yyyy年M月d日h時m分s秒")と指定してあげます。

Private Sub cmdCreateDateTime1_Click(sender As Object, e As EventArgs) Handles cmdCreateDateTime1.Click
    Try
        'カスタム書式指定文字列を用いて日付時刻を出力
        Dim strOutPut As String = Nothing
        Dim objDateTime As DateTime = DateTime.Now

        'yyyy年M月d日h時m分s秒形式
        strOutPut = objDateTime.ToString("yyyy年M月d日h時m分s秒")
        MessageBox.Show(strOutPut, "yyyy年M月d日h時m分s秒形式")

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

実際に実行してみます。

f:id:neko_britannia:20200623210516j:plain

はい、見事に0埋めが無くなりました。

 

編集後記

カスタム書式指定文字列は、初心者にとっては敷居が高い感じがしますが、慣れると使いやすいので、サクッと覚えてしまった方が良いと思います。日付以外にも使用する場面があると思いますが、まずは日付で慣れてみましょう。

参考サイト

DateTime 構造体

docs.microsoft.com

DateTime.Now プロパティ

docs.microsoft.com

カスタム日時形式文字列

docs.microsoft.com