連載

プロフェッショナルVB.NETプログラミング

第5回 日付時刻の取得とフォーマット

(株)ピーデー
川俣 晶
2002/05/14

Page1 Page2 Page3

日付時刻をソースに埋め込む

 ソース・コードに日付時刻を直接記述する場合は、日付リテラル形式(シャープ記号「#」で文字列を囲む)で記述するのが最も基本である。また、文字列で日付時刻を記述して日付型に変換する方法もある。これに関する若干の相違を説明する。まず、VB 6で書いたサンプル・プログラムをご覧いただきたい。

  1: Private Sub Form_Load()
  2:   Dim d1 As Date, d2 As Date
  3:   d1 = "2002/01/02"
  4:   d2 = #1/2/2002#
  5:   Debug.Print d1 = d2
  6:   Dim t1 As Date, t2 As Date
  7:   t1 = "01:02:03"
  8:   t2 = #1:02:03 AM#
  9:   Debug.Print t1 = t2
 10:   Dim dt1 As Date, dt2 As Date
 11:   dt1 = "2002/01/02 01:02:03"
 12:   dt2 = #1/2/2002 1:02:03 AM#
 13:   Debug.Print t1 = t2
 14: End Sub
日付リテラルと文字列を比較するVB 6のサンプル・プログラム5

 これを実行すると以下のようになる。つまり、日付リテラルと、文字列から変換された日付の値は同じである。

 1: True
 2: True
 3: True
サンプル・プログラム5の実行結果

 一見、文字列を使った方は自然に年月日の順に並んで分かりやすく、日付リテラルは月日年の順に並んで不自然に見えるかもしれない。しかし、文字列から変換する場合の書式は、システムの国際化関連の設定により変化し得るもので、あるパソコンで正しく日付型に変換できたものが、ほかのパソコンで正しく変換できる保証はない。その点で、日付リテラルは、システムの設定にかかわらず目的の日付時刻を確実に記述できるので、より安全である。さて、このソースをVB.NET上で動くようにしたものが以下のプログラム・コードである。

  1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2:   Dim d1 As Date, d2 As Date
  3:   d1 = "2002/01/02"
  4:   d2 = #1/2/2002#
  5:   Trace.WriteLine(d1 = d2)
  6:   Dim t1 As Date, t2 As Date
  7:   t1 = "01:02:03"
  8:   t2 = #1:02:03 AM#
  9:   Trace.WriteLine(t1 = t2)
 10:   Dim dt1 As Date, dt2 As Date
 11:   dt1 = "2002/01/02 01:02:03"
 12:   dt2 = #1/2/2002 1:02:03 AM#
 13:   Trace.WriteLine(t1 = t2)
 14: End Sub
サンプル・プログラム5をVB.NETで書き換えたサンプル・プログラム6

 これを実行すると以下のようになる。

 1: True
 2: True
 3: True
サンプル・プログラム6の実行結果

 日付リテラルの動作は変わっていない。VB.NETでも、やはり日付リテラルを使う方が安全といえる。その点でVB 6とVB.NETの間に相違はなく、変化はない。

 しかしここで問題なのは、ソース・コードの書式の違いではない。IDEで日付リテラルを入力しているとき、VB 6では年月日の順番で入力しても、システムが自動的に正しい順番に直してくれる。例えば、#2001/01/02#と入力すると、自動的に#01/02/2001#に直してくれる。しかし、VB.NETのIDEは、そのようなサービスを行ってくれず、自分で正しい順序で入力しなければならない

 もし、正しい順序を正確に把握せずにVB 6で日付リテラルを使用していた場合は、VB.NETに移行する際には、正しい順序を頭に入れておく必要がある。時刻の方は24時間制で入力しても自動的に12時間制に直してくれるようなので、こちらは問題にならないだろう。

次回予告

 次回はいくつかの論理演算子と制御構造について解説したいと考えている。

 では次回もまた会おう。End of Article


 INDEX
  連載 プロフェッショナルVB.NETプログラミング
  第5回 日付時刻の取得とフォーマット
    1.日付と時刻の相違 
    2.日付時刻の書式化
  3.日付時刻をソースに埋め込む
 
「プロフェッショナルVB.NETプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間