VB.NETで日付を好きな形式で表示!カスタムフォーマット徹底解説
生徒
「先生、VB.NETで今日の日付を表示させたら、なんだか見にくい形式で出てきてしまいました。もっと読みやすくする方法はありますか?」
先生
「それは『カスタムフォーマット』を使えば解決しますよ。日付や時間を自分の好きな形に整えることができるんです。」
生徒
「例えば『2026年3月28日』みたいに日本語を入れたり、時間を秒まで出したりすることもできるんですか?」
先生
「もちろんです!記号を組み合わせるだけで自由自在に見た目を変えられます。プログラミングが初めての方でも簡単にできるので、一緒にやってみましょう!」
1. カスタムフォーマットとは?
パソコンの中で日付や時間は、もともとは非常に細かい数字の集まりとして扱われています。これをそのまま画面に出すと、人間にとってはとても読みづらいものになってしまいます。そこで登場するのがカスタムフォーマットです。
カスタムフォーマットとは、日付や時間のデータを、私たちが普段使っているカレンダーや時計のような「見やすい文字」に変換するための「型紙(テンプレート)」のようなものです。VB.NETでは、この型紙をプログラムに指定するだけで、一瞬で見た目をきれいに整えることができます。これをマスターすれば、日記アプリや業務用のレポート、時計ツールなど、あらゆる場面で役立つ「親切な表示」が作れるようになります。
2. 一番よく使う!ToStringメソッドの基本
VB.NETで日付の見た目を変えるとき、最も頻繁に使うのがToString(トゥストリング)という命令です。これは直訳すると「文字列へ」という意味で、日付のデータを文字に変換してくれる機能を持っています。この命令のカッコの中に、好きな形式を指定するための記号を書き込みます。
まずは、一番シンプルな「スラッシュ(/)」区切りの表示方法を見てみましょう。プログラミング未経験の方でも、この一行を覚えるだけで日付表示の達人に一歩近づけます。
' 今日の日付を取得します
Dim kyo As Date = Date.Now
' yyyy/MM/dd という形式で表示します
Dim moji As String = kyo.ToString("yyyy/MM/dd")
Console.WriteLine("今日は " & moji & " です")
実行結果は以下のようになります。
今日は 2026/03/28 です
ここで使っているString(ストリング)というのは、文字を入れるための専用の箱(変数)のことです。カッコの中の"yyyy/MM/dd"が、今回使った「型紙」になります。これだけで、パソコン標準の味気ない表示が、一気に分かりやすくなりましたね。
3. 年・月・日・時間を表す特別な記号たち
カスタムフォーマットを作るには、いくつかの「決まった記号」を組み合わせる必要があります。最初は難しく見えるかもしれませんが、英単語の頭文字だと分かれば簡単です。代表的なものを紹介しますね。
- y(Year:年):年を表します。「yyyy」なら4桁、「yy」なら下2桁になります。
- M(Month:月):月を表します。「MM」なら「03」のように2桁で表示されます。
- d(Day:日):日を表します。「dd」なら「01」のように2桁になります。
- H(Hour:時間):時間を表します。「HH」は24時間制、「hh」は12時間制です。
- m(Minute:分):分を表します。「mm」と書きます。
- s(Second:秒):秒を表します。「ss」と書きます。
特に注意が必要なのが「月(M)」と「分(m)」の違いです。プログラムの世界では、大文字と小文字を区別して使い分けることがよくあります。月は大文字のM、分は小文字のmと覚えておきましょう。これさえ間違えなければ、思い通りの表示が作れます。
4. 日本語を混ぜた「〇年〇月〇日」の形式
日本で使われるアプリを作るなら、やはり漢字を使った表示にしたいですよね。VB.NETでは、フォーマットの中に直接漢字を書き込むことができます。これにより、より親しみやすい表示が可能になります。以下のコードでは、日付と時間をセットで日本語表示にする方法を紹介します。
' 今の時間を取得
Dim ima As Date = Date.Now
' 漢字を使ったフォーマットを指定します
Dim formattedText As String = ima.ToString("yyyy年MM月dd日 HH時mm分ss秒")
Console.WriteLine("現在の時刻:" & formattedText)
実行結果は以下のようになります。
現在の時刻:2026年03月28日 19時53分27秒
このように、記号以外の文字(漢字やスペースなど)はそのまま表示される仕組みになっています。この自由度の高さがカスタムフォーマットの素晴らしいところです。自分だけの特別な時計表示を作ってみるのも面白いですよ。
5. 曜日を表示する便利なテクニック
カレンダーアプリやスケジュール帳を作るとき、曜日が表示されていると便利ですよね。実は曜日も簡単な記号だけで表示することができます。アルファベットの「d」を3つ、あるいは4つ並べるだけで、パソコンが自動的に今日の曜日を調べて文字にしてくれます。パソコンを触ったことがない方でも、この裏技を使えばプロっぽいプログラムが書けます。
' 曜日を含んだ表示を作ります
Dim kyo As Date = Date.Today
' ddd なら「土」、dddd なら「土曜日」と表示されます
Dim youbi As String = kyo.ToString("yyyy/MM/dd (dddd)")
Console.WriteLine("カレンダー表示: " & youbi)
実行結果は以下のようになります。
カレンダー表示: 2026/03/28 (土曜日)
カッコで囲むなどの工夫も自由にできます。パソコンが「今日は何曜日かな?」とカレンダーをめくる作業を代わりにやってくれるので、私たちは記号を置くだけで良いのです。とても楽ちんですよね。
6. 1桁の数字をどう扱うか(0埋めとスペース)
例えば「3月」を表示するとき、「03月」と表示したいときもあれば、シンプルに「3月」と出したいときもありますよね。これも記号の数でコントロールできます。記号を2つ重ねる(MM)と、1桁の月でも「03」のように0をつけて桁を揃えてくれます(これを0埋めと呼びます)。逆に記号を1つだけ(M)にすると、余計な0をつけずに「3」と表示されます。
表形式で数字を綺麗に並べたいときは2文字(MM, dd)を使い、文章の中で自然に表示したいときは1文字(M, d)を使うのが、読みやすいアプリを作るためのコツです。こうした細かいこだわりが、ユーザーにとっての使いやすさ(アクセシビリティ)に繋がっていきます。
7. 午前と午後を表示する方法
時間を表示するとき、午前(AM)か午後(PM)かを表示したい場合もあります。これも記号を追加するだけで簡単に実現できます。VB.NETでは「tt」という記号を使うことで、現在の時間が午前か午後かを判定して文字を出してくれます。実際にどのように動くか見てみましょう。
' 12時間制での表示を試します
Dim sampleTime As New Date(2026, 3, 28, 15, 30, 0)
' tt を入れることで 午前/午後 が表示されます
' hh(小文字)は12時間制です
Dim ampmText As String = sampleTime.ToString("tt hh時mm分")
Console.WriteLine("午後の表示例: " & ampmText)
実行結果は以下のようになります。
午後の表示例: 午後 03時30分
お昼の3時が「15時」ではなく「午後 03時」と表示されましたね。このように、使う場面に合わせて最適な「型紙」を選べるようになれば、日付操作の基本は完璧です。他にも、秒のさらに下の単位であるミリ秒を表示する「fff」など、さらに細かい記号も存在しますが、まずは今回紹介した基本の記号からマスターしていきましょう。
8. 初心者が間違いやすいポイントと解決策
日付のフォーマットで一番よくある間違いは、先ほどもお伝えした「大文字と小文字の取り違え」です。特に「分」を表示したかったのに「月」が出てしまった、という失敗はプロでも時々やってしまいます。また、カッコ () やスラッシュ / 以外の特殊な記号を文字として表示したい場合は、円マーク \ を記号の前に置く必要があるなど、少しだけ決まりごとがあります。
しかし、難しく考える必要はありません。まずは基本の "yyyy/MM/dd HH:mm:ss" を一つのセットとして覚えてしまい、そこから少しずつ自分流にアレンジしていくのが一番の近道です。プログラムを書いて実行してみて、画面に思い通りの形が出たら、その達成感をぜひ大切にしてください。VB.NETは初心者に寄り添ってくれる言語なので、何度も試しながら学んでいけば、必ず自由に日付を操れるようになりますよ!