JavaのSimpleDateFormatクラスとは?Date型とString型の変換方法を解説

- システム
エンジニア - JavaのSimpleDateFormatクラスはどのようなことができるのでしょうか。
- プロジェクト
マネージャー - JavaでDate型を使う際にString型に変換できます。
JavaのSimpleDateFormatクラスとは?
今回は、JavaのSimpleDateFormatクラスについて解説します。
JavaでDate型を使う際、String型に変換したいことがあるでしょう。そんな時にSimpleDateFormatクラスを使えば、指定した書式でString型へと変換できます。逆にString型の日付を、SimpleDateFormatクラスを使えばDate型へと変換することもできます。
JavaでSimpleDateFormatクラスを使った、Date型とString型の変換について興味のある方はぜひご覧ください。
JavaのSimpleDateFormatクラスを使ってDate型とString型を変換する方法
Date型とString型の変換方法を説明する前に、Date型について簡単に説明します。
Date型とはJavaにおいて日付を扱うために用いられる型です。日付の比較や加算など、日付を処理する場面で便利な型ですが、下記のサンプルプログラムを実行してDate型変数をコンソール表示すると、
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.*; import java.util.Date; public class Main { public static void main(String[] args) throws Exception { // 現在の日時を表示 Date date = new Date(); System.out.println(date); } } |
Mon Jun 14 14:23:24 JST 2021
上記のようにコンソール出力されます。おそらくですが、わかりにくいと感じた方がいるでしょう。一方で、例えば「2021年6月14日 月曜日 14時23分24秒」というようなフォーマットで表示できればわかりやすくなります。
それではSimpleDateFormatクラスを用いた、Date型を指定のフォーマットへと変換する方法を見ていきましょう。
Date型をString型へと変換する方法
Javaで、Date型をString型へ変換する方法を解説します。
下記のサンプルは、Date型で取得した現在の日時を、フォーマットを指定してString型へと変換するソースコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.*; import java.util.Date; import java.text.SimpleDateFormat; public class Main { public static void main(String[] args) throws Exception { Date date = new Date(); // フォーマットを取得 SimpleDateFormat sdf = new SimpleDateFormat("yyyy'年'MM'月'dd'日'E'曜日'k'時'mm'分'ss'秒'"); // タイムゾーンを設定 TimeZone timeZoneJP = TimeZone.getTimeZone("Asia/Tokyo"); sdf.setTimeZone(timeZoneJP); // Date型⇒String型へ変換 System.out.println(sdf.format(date)); } } |
実行結果は次のようにコンソール出力されます。
2021年06月14日月曜日23時37分02秒
SimpleDateFormatクラスのインスタンスを作成する際、変換したいフォーマットを引数に指定します。今回は「yyyy年MM月dd日E曜日k時mm分ss秒」というフォーマットに変換するため、上記ソースコードのように引数へとセットしました。
フォーマットに使われているyやMはパターン文字で、yは年を、Mは月を表しており、下記のパターン文字がよく使われます。
・y ⇒ 年
・M ⇒ 月
・d ⇒ 日
・E ⇒ 曜日
・H ⇒ 時(0-23時)
・h ⇒ 時(1-12時)
・m ⇒ 分
・s ⇒ 秒
・S ⇒ ミリ秒 ※小文字は秒、大文字はミリ秒であることに注意
また、パターン文字の文字数によっても表示が変わります。例えば4月1日を変換する場合では、「MM月dd日」で「04月01日」と、「M月d日」で「4月1日」と変換されます。
そしてフォーマットに日本語を入れる時は、日本語をシングルクォーテーション「’」で囲みましょう。
SimpleDateFormatクラスのインスタンスを生成後、タイムゾーンを設定しました。タイムゾーンとは、時刻をどの地域の標準時で運用するかを定めた設定のことです。
今回は日本の時刻を表示するため、TimeZoneクラスのgetTimeZoneメソッドにて「Asia/Tokyo」を引数に指定しました。
SimpleDateFormatクラスのsetTimeZoneメソッドでタイムゾーンを設定後、formatメソッドでString型へと変換します。
String型をDate型へと変換する方法
続いて、String型の日付をDate型へと変換する方法を解説します。
下記のサンプルは、String型の日時をDate型へと変換するソースコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.util.*; import java.util.Date; import java.text.SimpleDateFormat; public class Main { public static void main(String[] args) throws Exception { String strDate = "2021年06月14日月曜日23時37分02秒"; // フォーマットを指定 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy'年'MM'月'dd'日'Ek'時'mm'分'ss'秒'"); // String型⇒Date型へ変換 Date date = dateFormat.parse(strDate); // コンソールへ表示 System.out.println(date); } } |
実行結果は下記のようにコンソール出力されます。
Mon Jun 14 23:37:02 JST 2021
「yyyy年MM月dd日E曜日k時mm分ss秒」というフォーマットのString型を変換しました。そのためSimpleDateFormatクラスのインスタンスを生成する際、引数に「yyyy’年’MM’月’dd’日’Ek’時’mm’分’ss’秒’」と指定しました。
このようにDate型へと変換する場合は、あらかじめフォーマットを指定する必要があります。
インスタンスを生成後、SimpleDateFormatクラスのparseメソッドでDate型へと変換します。日付として誤った値を変換するとParseExceptionの例外エラーを発生してしまうため、変換前にDate型として妥当かチェックを入れたうえで変換しましょう。
- システム
エンジニア - JavaのSimpleDateFormatクラスについて理解できました。
- プロジェクト
マネージャー - SimpleDateFormatクラスを使う場合の参考にしてみてください。
JavaのSimpleDateFormatクラスを使ってみよう!
いかがだったでしょうか。JavaではSimpleDateFormatクラスを使うことで、Date型とString型の変換ができます。
Date型はJavaで日付を扱う際に用いられますが、そのままコンソール表示するとわかりにくい形式で表示されてしまいます。そのためわかりやすく表示する際は、フォーマットを指定して、SimpleDateFormatクラスのformatメソッドで変換しましょう。
また、Date型は日付の比較や加算などをするうえで便利な型です。String型の日付を比較、加算などする場合は、SimpleDateFormatクラスのparseメソッドでDate型へと変換しましょう。
今後、JavaでSimpleDateFormatクラスを使う機会があったらぜひこの記事を参考にしてみてください。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

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


Java新着案件New Job
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅)販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅)生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅)社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅)金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅)大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)