【VB.Net】String型からDateTime型への変換

どうも!リョクちゃです。

今回は、タイトルの通りString型からDatetime型へ変換をする方法を紹介していきます。

文字列として与えられた2つの日付をDateTime型に変換し、どちらの日付が最新日かどうかを

判定し結果を返すといった例を交えて解説をしていきます。

ちなみに前回はこちら、

これまでにMid関数やLeft/Right関数を使用して文字列内情報を抽出する方法を紹介していきましたが、今回はStringクラスで提供されているSubstringメソッドを使用した方法を例を交えて紹介しています。



日付書式(フォーマット)について

String型の日付をDateTime型へ変換していく前に、日付書式について触れていきます。

日付書式とは、

ISO 8601(1988年)では、”YYYY-MM-DD”方式(年・月・日の順番で、紀年法による西暦(CE)で年を数字4桁、月と日とを各々数字2桁で表す方式)と定められている。

日付 – Wikipedia

とネットでは解説されています。

Yを年、Mを月、Dを日とすることで、日付を表すことができます

YやM、Dの数によって表示のされ方も変えることができます。

例えば、YYYY-MM-DDであれば、

2020-12-19と日付を表示することができます

以下に、一覧を記します。

No書式詳細
1d月の日にち
例) 1 ~ 31
2dd月の日にち
2桁表示
例) 01 ~ 31
3M
例) 1 ~ 12
4MM
2桁表示
例) 01 ~ 12
5yy
末尾2桁表示
例) 00 ~ 99
6yyy
3桁以上の表示
例) 001 ~ 999
7yyyy
4桁表示
例) 0001 ~ 9999
スポンサーリンク




String型からDateTime型への変換 : DateTime.Parse()

String型の日付からDateTime型に変換するには、

DateTime.Parse()を使用します

Parseメソッドは以下の引数を渡す必要があります。

DateTime.Parse(“文字列型の日付データ”)

引数を渡すことで、引数をDateTime型に変換したデータを戻り値として返します。

ただし、引数として与えられたデータの書式が日付書式と一致しない場合は、

エラーとなってしまいます

ここでいう正しい日付書式とは、

yyyy-MM-ddyyyy/MM/ddとして日付データが表せているかになります。

yyyy-MM-ddなら2020-12-19
yyyy/MM/ddなら2020/12/19

yyyyMMddなら20201219となるのですが、

こちらだとParseメソッドではエラーとなります

これらを踏まえ、コードで書くと以下のようになります。

正しく変換できているか判定 : DateTime.TryParse()

DateTime.Parse()では、日付書式が違うとエラーになると説明をしました。

しかしながら都度エラーが出ていたら、アプリケーションにとしては使いづらいですよね。

そんな時に、正しく日付に変換できているかどうかをチェックしてくれる関数があります。

それが、DateTime.TryParse()になります。

これは以下のようにして使うことができます。

DateTime.TryParse(“文字列型の日付データ”,”変換結果を格納する変数”)

引数に文字列型の日付データとそれを変換した結果を格納する変数をそれぞれ渡します。

戻り値は、日付が正しく変換できるかどうかをチェックしたBoolean型で返されます

正しく変換された場合は、Trueを返し、されない場合はFalseを返します。

これを使うことで、事前に変換できたかどうかのチェックをさせることができます

踏まえて、使い方をコードで書くと以下のようになります。

それでは、例としてフォームを作成して変換について理解を深めていきます。

準備編:フォームの作成

今回は以下のようなフォームを作成します。

Noコントロール名前
1LabelLabel1
2TextBoxTextBox1
3LabelLabel3
4LabelLabel4
5LabelLabel2
6TextBoxTextBox2
7ButtonButton1

実行環境

筆者の実行環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.1

になります。

※ Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。

アプリケーションの目的

日付1(TextBox1)と日付2(TextBox2)に入力された文字列型の日付をボタンを押すことで、

DateTime型に変換した後、日付1と日付2のどちらが最新の日付かを判定し、

最新の日付をLabel4に表示することを目的とします。

プログラム編

前述で紹介した変換方法を踏まえて、作成したコードがこちらになります。

今回は、アプリケーションの操作性等も考慮してTryParse()を使っています。


実行編

それでは実際に作成したコードを実行し、動作を確認していきます。

プログラム起動時

日付をそれぞれ入力しています。

ボタンを押し判定した結果になります。

日付書式が正しくない場合は、以下のようになります。

例えば、日付書式がそれぞれ違う場合の比較の場合

正しく判定をし、最新の日付を返してくれることが確認できます。

まとめ

Striung型からDateTime型への変換方法について、例を交えて変換の考え方や

変換に使う関数の使い方について解説をしていきました。

入力値として日付が与えられることは

開発するアプリケーションによっては頻繁に出くわすかもしれません。

そんな時に今回紹介した関数を思い出して使っていただけたらなと思います。

最後までご覧いただきありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク