Date型データ(VB2005)を処理する時の留意点
前回は、タスクスケジューラでのID違いによる日時フォーマットが異なるバグのお話をしました。
今回は、Date型データを処理する時の全般的な留意点です。
- Date型は、System.DateTime構造体のエイリアスである。
- Date型オブジェクトを引数なしでToStringするとカルチャ(補足3)とコンパネ設定(補足1)に依存された文字列を返す。
- したがって、12時間表記のコンパネ時間設定になっていると、午前午後の判別がつかない。
- なので、ToStringする時は、必ず第1引数にフォーマット(補足2)を指定する。
- また、カルチャに依存したくない場合は、第2引数にDateTimeFormatInfo.InvariantInfoを指定する。
- 尚、DateTimeFormatInfoは、System.Globalization名前空間(Imports System.Globalization)にある。
- ちなみに、フォーマットは、VB6の時のようにFormat関数でも指定ができる。
- 逆に文字列をDate型にするには、CDate関数も使用できるが、厳密かつ高速に変換できるParseExactメソッド使用(補足4)が推奨。
補足1:日時フォーマットのコンパネ設定
スタートメニュー->設定->コントロールパネル->地域と言語のオプション->
地域オプションタブ->カスタマイズボタン->時刻タブで日時フォーマット設定。
補足2:フォーマット書式指定子(よく利用するものを抜粋)
書式指定子 | 説明 |
yyyy | 4桁の年(例:2007) |
yy | 0埋め2桁の年(例:07) |
MM | 0埋め2桁の月(例:06) |
dd | 0埋め2桁の日(例:16) |
HH | 0埋め2桁の24表記時間(例:21) |
hh | 0埋め2桁の12表記時間(例:09) |
mm | 0埋め2桁の分(例:23) |
ss | 0埋め2桁の秒(例:06) |
補足3:カルチャとは
カルチャとは、言語、環境、および文化的な習慣に関連する、ユーザ設定情報のセットです。
カルチャは、CultureInfoオブジェクトのCurrentUICultureプロパティとして設定(日付、数値、通貨などの値の形式)されている。
補足4:ParseExactメソッド使用サンプル
' カルチャ情報を設定する Dim hFormat As New System.Globalization.CultureInfo("fr-FR", False) ' 文字列から DateTime の値に変換する Dim dtBirth As DateTime = DateTime.ParseExact("07/04/2005 22:31:35", "G", hFormat) ' 取得した日付と時刻を表示する MessageBox.Show(dtBirth.ToString())http://jeanne.wankuma.com/tips/datetime/parseexact.html