VB.NETで日付を文字列にフォーマット変換する方法を徹底解説!

「VB.NETで日付を文字列に変換するには、どうすればいいんだろう……」
「具体的な方法やサンプルコードが知りたいな……」
と思っていませんか?
プログラミングを行う上で、日付を扱うケースは多いです。そのため、日付から文字列に変換する方法を覚えておくのがおすすめです。
ただ、「VB.NETは変換方法が多く、覚えられない……」と思う人も多いのではないでしょうか。
そこで今回は、VB.NETで日付を文字列にフォーマット変換する方法について解説します。
- プログラマー
- VB.NETで日付を使う時の悩みを減らしたい!
- システム
エンジニア - 変換方法はたくさんけど、覚えておくのは1つだけでも大丈夫。その理由や他の変換方法について、まとめて解説しますね!
※この記事は、Visual Basicの16.0で動作確認しました。
VB.NETで日付を文字列にフォーマット変換する方法とは?
VB.NETで日付を文字列にフォーマット変換する方法は、大きく分けて以下の2つです。
1. 変換方法が指定されている関数を使う
2. 応用的な関数を使って指定する
1つずつ詳しく解説しますね。
1. 変換方法が指定されている関数を使う
1つ目は、「変換方法が指定されている関数を使う」ことです。
VB.NETには、「ToString」のように「To〇〇〇〇」の名がついた関数があります。これを使えば、以下のように日時を文字列に変換できます。
・ToString
表示例:2020/1/1 12:00:30
・ToShortDateString
表示例:2020/1/1
・ToLongDateString
表示例:2020年1月1日
・ToShortTimeString
表示例:12:00
・ToLongTimeString
表示例:12:00:30
使い方の例:
1
|
日時.ToString
|
具体的な使い方の例については、後ほどサンプルコードと共に解説しますね。
2. 応用的な関数を使って指定する
2つ目は、「応用的な関数を使って指定する」方法です。
「To〇〇〇〇」の書き方の場合、変換後の結果を覚えていないと、扱いが難しいですよね。そんな時に便利なのが、Format関数です。
以下のように変換後の表示を指定して、日付を文字列に変換できます。
Format関数の使い方:
1
|
Format(日付や日時, "yyyy/MM/dd")
|
上記は、「2020/01/01」のように年月日を表示する例です。
Formatで使える日付・日時に関する指定方法は、以下のとおりです。
※以下は、「2020/12/18 12:30:15」を指定した場合の例です。
・yyyy
意味:年
値の例:2020
・MM
意味:月
値の例:12
・dd
意味:日
値の例:18
・hh
意味:時
値の例:12
・mm
意味:分
値の例:30
・ss
意味:秒
値の例:15
月の指定が大文字の「MM」、分の指定が小文字の「mm」になっていることに注意してください。
VB.NETで日付を文字列にフォーマット変換するサンプルコード
次に、VB.NETで日付を文字列にフォーマット変換する、サンプルを解説します。
サンプルコードは、以下のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Shared Sub Main(args As String())
'resultToShortDateStringを使って変換し、結果を変数に格納
Dim resultToShortDateString As String
resultToShortDateString = Now.ToShortDateString
'Formatを使って変換し、結果を変数に格納
Dim resultFormat As String
resultFormat = Format(Now, "yyyy/MM/dd")
'結果をログに出力
Console.WriteLine("ToShortDateString:" & resultToShortDateString)
Console.WriteLine("Format:" & resultFormat)
End Sub
|
実行結果:
「Now.ToShortDateString」では、現在の日時を「YYYY/MM/DD形式」に置換し、結果を変数「resultToShortDateString」に格納しています。
また、「Format(Now, “yyyy/MM/dd”)」ではFormat関数を使い、「YYYY/MM/DD形式」に置換した結果を、変数「resultFormat」に格納しています。
そしてその結果を、「Console.WriteLine」で出力しているサンプルです。
どちらも同じ結果になっていますが、Format関数の方が汎用性は高いです。そのため、Format関数の使い方を覚えておくのがおすすめです。
事前にフォーマット変換できるかチェックする方法とは?
「日付を文字列に変換する方法を解説しているけど、そもそも変換が可能かチェックする方法はないの?」と思った方もいるのではないでしょうか。
必ず日付型のデータが入るよう処理を作っていれば、問題ないかもしれません。ただ、画面入力した値を利用する場合や、予期せぬ値が来るケースはよくあります。
そんな時に便利なのが、IsDate関数です。IsDate関数を使えば、以下のように日付型になっているかチェックできます。
サンプルコード:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Shared Sub Main(args As String())
'日付型かどうかチェック
Dim boolDate1 As String
Dim boolDate2 As String
boolDate1 = IsDate(Now)
boolDate2 = IsDate("test")
'結果をログに出力
Console.WriteLine("boolDate1:" & boolDate1)
Console.WriteLine("boolDate2:" & boolDate2)
End Sub
|
実行結果:
変数「boolDate1」には、先ほどサンプルで使用した「Now」を使っており、変数「boolDate2」には文字列「test」を入れています。
結果が、「boolDate1」のみTrueになっていますよね。このように、日付型かどうかチェックができるのです。
IsDate関数でチェック後に、Format関数で文字列に変換するサンプルは、以下のとおりです。
サンプルコード:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Shared Sub Main(args As String())
'日付型かどうかチェック
Dim boolDate As String
boolDate = IsDate(Now)
'日付型になっていなかった場合は、処理終了
If boolDate = False Then
Exit Sub
End If
'Formatを使って変換し、結果を変数に格納
Dim resultFormat As String
resultFormat = Format(Now, "yyyy/MM/dd")
'結果をログに出力
Console.WriteLine("boolDate:" & boolDate)
Console.WriteLine("Format:" & resultFormat)
End Sub
|
実行結果:
上記は、日付型になっているかIF文で事前にチェックする処理を追加した、サンプルコードです。
ここまで出来れば、フォーマット変換上手くできずエラーが起こる心配が少なくなります。ぜひ、覚えておきましょう。
まとめ
今回は、VB.NETで日付を文字列にフォーマット変換する方法を解説しました。
変換方法はいろいろありますが、Format関数が応用的に使いやすく、おすすめです。また、最後に解説したIsDate関数 + IF文を使ったチェックを入れると、よりエラーが起こりにくいコードになります。
ぜひ、実際にコードを書いて動かしてみてくださいね!
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)