zukucode
主にWEB関連の情報を技術メモとして発信しています。

VB.NET YYYYMMDD形式の文字列を日付型に型変換する

VB.NETYYYYMMDD形式の文字列を日付型に型変換する方法を紹介します。

区切り文字を追加

最初にYYYY/MM/DDのように、年月日の区切りに/を追加します。

Dim value As String = "20170123"
value = value.Substring(0, 4) & "/" & value.Substring(4, 2) & "/" & value.Substring(6, 2)

型変換

/区切りの文字列にするとCDateで日付型に型変換できるようになります。

Dim date1 As Date
date1 = CDate(value)

注意点

上記処理をファンクションにして共通化する場合、以下の注意が必要です。

Substringで文字列より長い文字列を指定するとエラーになる

例えば201701のように6文字しかない文字列に対してSubstringで7文字目以降を見に行くような指定をするとエラーが発生します。

エラーになる
Dim value As String = "201701"
value = value.Substring(0, 4) & "/" & value.Substring(4, 2) & "/" & value.Substring(6, 2)

CDateで日付型に変換できない場合はエラーになる

/区切りにしたとき、文字列が2017/01/32のように、存在しない日付やaaaa/bb/ccのようにそもそも数値でない場合、CDateで日付型に型変換しようとするとエラーが発生します。

チェック処理を追加

上記のチェックを加えて、YYYYMMDD形式の文字列を日付型に型変換する共通ファンクションを作成します。

Function YYYYMMDDToDate(value As String) As Date
    Dim formatedValue As String

    '8文字でない場合は処理終了
    If value.Length <> 8 Then Return Nothing

    '/区切りの文字列に変換
    formatedValue = value.Substring(0, 4) & "/" & value.Substring(4, 2) & "/" & value.Substring(6, 2)

    '日付型に変換できない場合は処理終了
    If Not IsDate(formatedValue) Then Return Nothing

    '日付型に変換して返却
    Return CDate(formatedValue)
End Function

関連記事

  • VB.NET 配列をカンマ区切りの文字列に変換する

    配列をカンマ区切りの文字列に変換するにはString.Joinを使用します。第1引数には区切り文字を指定し、第2引数に対象の配列を指定します。


  • VB.NET 2重のForループを一気に抜ける方法

    VB.NETで2重のFor文の一番深い箇所でExit Forコマンドを実行しても自身のFor文しか抜けることができません。子ループをExit Forで抜ける前にBreakフラグなどを立てておいて、親ル...


  • VB.NET ダブルクォーテーションを文字列として扱う方法

    VB.NETで文字列を扱うときは以下のようにダブルクォーテーションで囲います。文字列の中にダブルクォーテーションを含めたい場合は少し工夫が必要です。以下のようにダブルクォーテーションを2つにすれば1つ...


  • VB.NET StringBuilderの末尾の1文字を削除する

    StringBuilderで末尾の1文字だけ削除したいときは以下のようにします。位置の指定について、1文字目は0から始まるため、文字列の長さ(Length)-1の位置が末尾の位置となります。末尾の位置...


  • VB.NET DataTableに新規行を追加する

    DataTableに追加したい行をDataROw型で宣言し、dt.NewRowと設定すると、dtのカラムの情報などがセットされます。その行のカラムに値をセットして、Add(行)で末尾に行を追加できます...


  • VB.NET DataTableをSelect検索をして絞り込みや存在チェックを行う

    VB.NETでDataTableをSelectして絞り込みや存在チェックを行う方法を紹介します。DataTable.Select(条件)で条件に該当する行をDataRowの配列で返却します。返却された...


  • VB.NET DataTableの先頭に新規行を追加する

    VB.NETでDataTableの先頭に新規行を追加する方法を紹介します。InsertAt(追加する行, 位置)で任意の位置に行を追加できます。位置を0とすると0行目(先頭)に追加することになります。


  • VB.NET 配列を検索して存在チェックを行う

    VB.NETで配列の中に指定した値が含まれているどうかの存在チェックをするにはArray.IndexOfを使用します。指定した値が存在する場合は、最初に存在した要素のインデックスを返します。存在しなか...


  • VB.NET DataTableの行に対してループ処理を行う

    SQLで取得したDataTableなどを件数分ループして表示したいときがあります。ForEachを使用するとシンプルになります。dt.RowsでDataRowの配列が取得できます。配列の要素を1つづつ...


  • VB.NET For文で指定した回数だけループで同じ処理を行う

    VB.NETのFor文で指定した回数だけループで同じ処理を行う方法を紹介します。fromを1から始めれば、toは配列の要素数となり、ループの回数の指定はわかりやすくなりますが、配列のインデックスは1で...