VB.NETで日付文字列をDate型に変換したい。どうやらこんなものを扱わねばならぬようだ。
2018OCT05 13:45:30
日付書式的にはこうなる
yyyyMMMdd HH:mm:ss
ポイントは月名が3文字で入っていること。
こいつをうまいことDate型に取り込み、プログラムで扱えるようにしたいのである。
やれやれ。僕は検索した。
検索結果
基本の処理
日時を表す文字列をDateTimeオブジェクトに変換する
カルチャ関連
IFormatProvider Interface
[.net] CultureInfo.InvariantCultureとはどういう意味ですか?
実行結果
実装はこんな感じ。
Dim timeStr = "2018OCT05 13:45:30"
Dim date As DateTime
If DateTime.TryParseExact(timeStr,
"yyyyMMMdd HH:mm:ss",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
date) Then
Console.WriteLine(date.ToString)
Else
Console.WriteLine("Error!")
End If
TryParse()
はパースできたらTrueを返し、5番目の引数date
に変換結果を入れてくれる。
3番目の引数(provider
)として指定してるSystem.Globalization.CultureInfo.InvariantCulture
が、国や地域の差をうまいことごにょごにょやって適切なアレにしてくれるおまじない。
逆にここに日本とかドイツとかの指定を入れることでその文化圏に応じた処理をしてくれる。らしい。よく知らない。
実行するとこうなる
2018/10/05 13:45:30
なお、このコードでprovider
にNothing
を指定するとElseのエラー処理に飛ぶ。