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 YYYYMMDD書式の文字列が日付かどうか判定する

    VB.NETで、YYYYMMDD書式の文字列が日付として妥当かどうかを判定します。以下のように、Date.TryParseExactを使用して、日付型の文字列に変換可能かどうかで判定しています。Dat...


  • VB.NET 文字列の全角と半角の変換を行う

    VB.NETで文字列を全角→半角や半角→全角に変換するにはStrConv関数を使用します。StrConvの第1引数に対象文字列を指定し、第2引数に変換方法を指定します。半角に変換するにはVbStrCo...


  • VB.NET TypeOfで変数の型判定・比較を行う

    VB.NETで変数の型をチェックするにはTypeOfを使用します。TypeOf チェックしたい変数名 Is 判定したい型の形式で指定します。


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

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


  • VB.NET 指定した文字列を削除する

    VB.NETで指定した文字列を削除する方法を紹介します。Replace関数は指定した文字列を別の文字列に置換する関数です。置換する文字列に空文字を指定すれば、指定した文字列が削除される形になります。J...


  • VB.NET 指定した桁数だけ同じ文字を文字列で定義する

    VB.NETで指定した桁数だけ同じ文字を文字列で定義する方法を紹介します。例えばオール9の10桁の文字列9999999999を定義するときに、9999999999を指定するのは、桁数を間違える危険があ...


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

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


  • VB.NET 文字列を数値に変換する方法

    VB.NETでString型の文字列を数値に変換する方法を紹介します。以下の例では、Integer型の数値に変換しています。文字列型の変数を数値型に変換する場合には以下に注意する必要があります。例えば...


  • VB.NET 文字列を連結する便利な方法まとめ

    VB.NETで文字列を連結します。VB.NETでは文字列の連結は文字列同士を&で結合できます。&の代わりに+でも可能ですが、数値型の場合は足し算として扱われてしまうので基本的には&を使用することをおす...


  • VB.NET 文字列をカナ、全角半角、大文字小文字などを区別せずに比較する方法

    VB.NETで文字列をひらがなカタカナ、全角半角、大文字小文字を区別せずに、前方一致や部分一致で検索する方法をまとめて紹介します。例えばあいうえおという文字列にうえという文字列が含まれているかどうか判...