VB.NETで日付を文字列に変換!ToStringやFormatの使い方を徹底解説
生徒
「先生、VB.NETで取得した日付を『2026年3月26日』みたいに、好きな見た目で表示させるにはどうすればいいんですか?」
先生
「日付のデータを、人間が読みやすい『文字列』という言葉のデータに変える必要がありますね。主にToStringメソッドやFormat関数を使いますよ。」
生徒
「文字列に変える?難しそうですが、やり方は決まっているんですか?」
先生
「はい!あらかじめ決められた記号を組み合わせるだけで、自由自在に見た目を変えられます。それでは、具体的な方法を見ていきましょう!」
1. 日付を文字列に変換するとは?
プログラミングの世界では、パソコンが管理している「日付のデータ」と、私たちが画面で目にする「文字としてのデータ」は別物として扱われます。パソコンの中では日付は計算しやすい特別な数字のような形で持っていますが、そのままでは人間にとって読みにくいことがあります。そこで登場するのが文字列変換です。
「文字列」とは、パソコンで扱う「文字の並び」のことです。日付データを文字列に変換することで、「/(スラッシュ)」を入れたり「時・分・秒」を付け加えたりして、カレンダーや時計のような見やすい形式に整えることができるようになります。VB.NETではこの作業を非常に簡単に行うための道具が用意されています。
2. 一番よく使うToStringメソッドの基本
日付データを文字列に変える際、最も一般的で便利な方法が ToString(トゥー・ストリング)という命令を使う方法です。名前の通り「String(文字列)へ(To)変える」という意味ですね。使い方はとてもシンプルで、日付が入っている箱(変数)のあとに .ToString() と書き足すだけです。
パソコンを初めて触る方にとって「メソッド」という言葉は聞き慣れないかもしれませんが、これはそのデータに対して実行できる「動作」や「命令」のことだと思ってください。日付に対して「文字になってね!」とお願いするのが ToString の役割です。まずは何も指定せずに文字にしてみる例を見てみましょう。
' 今日の日付を取得します
Dim kyo As DateTime = DateTime.Now
' そのまま文字列に変えて表示します
Dim moji As String = kyo.ToString()
Console.WriteLine(moji)
2026/03/26 10:30:15
3. カスタム書式で見た目を自由自在に変える
ただ文字にするだけではなく、自分の好きな形に整えたい場合に使うのが「カスタム書式」です。ToString のカッコの中に、特別な意味を持つ記号(書式指定子といいます)を書き込みます。例えば、「y」は年(Year)、「M」は月(Month)、「d」は日(Day)を意味します。
これらの記号を「yyyy/MM/dd」のように並べることで、パソコンに対して「4桁の年、2桁の月、2桁の日をスラッシュで区切って表示してね」という指示を出すことができます。ここで注意が必要なのは、月は大きな「M」を使い、分は小さな「m」を使うというルールです。これを間違えると、月を表示したいのに分が表示されてしまうので気をつけましょう。
Dim ima As DateTime = DateTime.Now
' 「2026年03月26日」のような形式で作ります
Dim format1 As String = ima.ToString("yyyy年MM月dd日")
' 「10:30」のような時間だけの形式で作ります
Dim format2 As String = ima.ToString("HH:mm")
Console.WriteLine(format1)
Console.WriteLine(format2)
2026年03月26日
10:30
4. よく使う日付の記号一覧表
書式指定に使う記号にはいくつかのパターンがあります。これらをパズルのように組み合わせるだけで、どんな形式でも作ることができます。代表的なものを整理してみましょう。パソコン未経験の方は、この表を見ながら少しずつ試してみてください。
| 記号 | 意味 | 表示例 |
|---|---|---|
| yyyy | 西暦(4桁) | 2026 |
| MM | 月(2桁) | 03 |
| dd | 日(2桁) | 26 |
| ddd | 曜日の省略形 | 木 |
| HH | 時(24時間表記) | 10 |
| mm | 分 | 30 |
| ss | 秒 | 15 |
例えば、「曜日まで表示したい!」という時は ddd を使います。「yyyy/MM/dd (ddd)」と書けば、「2026/03/26 (木)」という表示になります。非常に便利ですね。
5. Format関数を使った別の変換方法
VB.NETには ToString 以外にも、Format(フォーマット)関数という道具があります。これは古くからのVB(ヴィジュアルベーシック)でよく使われていた書き方で、今でも多くのプログラムで見かけることがあります。使い方は、Format(日付データ, "見た目のルール") という形になります。
「関数」とは、何かを入れると加工して出してくれる装置のようなものです。この装置に「日付」と「ルール」を入れると、綺麗に整えられた「文字列」が出てきます。ToString と結果は同じですが、書き方の好みに合わせて選ばれることがあります。初心者の方は、どちらか一方でまずは慣れていくのが良いでしょう。
Dim kyo As DateTime = DateTime.Today
' Format関数を使って表示を整えます
Dim result As String = Format(kyo, "yyyy/MM/dd")
Console.WriteLine("今日は " & result & " です")
今日は 2026/03/26 です
6. 和暦(令和など)を表示させる高度な設定
日本のプログラム開発では「令和〇年」といった和暦を表示させたい場面も多いです。VB.NETでは少しだけ設定が必要ですが、これも文字列変換の一部として行うことができます。具体的には、「カルチャ」という言葉を使って、日本の文化に合わせた表示をするようにパソコンに伝えます。
「カルチャ(Culture)」とは、国や地域ごとの文化設定のことです。日付の表示方法は国によってバラバラなので、日本という場所のルールを適用することで、自動的に和暦に変換してくれます。少し難しい内容ですが、「g」という記号を年(y)の前につけることで、元号(令和など)を表示できるという魔法があります。
' 日本の和暦設定を準備します
Dim culture As New System.Globalization.CultureInfo("ja-JP")
culture.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar()
Dim ima As DateTime = DateTime.Now
' 「ggyy年」で元号と年を表示します
Dim wareki As String = ima.ToString("ggyy年MM月dd日", culture)
Console.WriteLine(wareki)
令和08年03月26日
7. 変換時によくある間違いと注意点
最後に、日付を文字列に変えるときに初心者がハマりやすいポイントを紹介します。まず一番は、先ほども触れた「大文字のM(月)」と「小文字のm(分)」の混同です。もし画面に「2026/30/26」のような変な日付が出たら、それは月を表示すべき場所に分を表示している証拠です。
もう一つは、日付のデータが空っぽ(何も入っていない状態)のときに ToString を使おうとしてしまうことです。これをやると、プログラムが驚いて止まってしまいます。これを防ぐには、日付がちゃんと入っているか確認してから変換するという手順が大切です。一歩ずつ、丁寧にプログラムを組んでいくことが成功の秘訣です。
日付を思い通りの文字列に変換できるようになると、あなたの作るアプリは一気にプロっぽくなります。カレンダーアプリや、時間をカウントするタイマーなど、作れるものの幅がぐんと広がります。まずは「yyyy年MM月dd日」を覚えるところからスタートして、色々なパターンを試して遊んでみてくださいね!