小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

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