Javaには日時のフォーマットを指定したり、日付を演算することができるCalendarクラスがあります。
この記事では、
- SimpleDateFormatの使い方
- SimpleDateFormatの注意点
- 日付のフォーマットを変更する方法
- DateFormatクラスでフォーマットを指定する方法
- 日付を比較する方法
- Date型とString型文字列との変換
という基本的な内容から、などの応用的な内容に関しても解説していきます。今回はそんなCalendarクラスについて、さまざまな方法をわかりやすく解説します!
この記事の目次
SimpleDateFormatの使い方
日付や時刻のフォーマットを指定する場合は、SimpleDateFormatクラスを使用します。
SimpleDateFormat オブジェクト名 = new SimpleDateFormat(”フォーマットパターン”)
指定したフォーマットは、formatメソッドの引数に指定された日付を、SimpleDateFormatオブジェクトのパターンに従ってフォーマットします。
オブジェクト名.format(date)
フォーマットパターンを指定することで、さまざまなフォーマットで日付や時刻を表示することができます。SimpleDateFormatクラスを使用するためには、import java.text.SimpleDateFormatを指定します。
指定するフォーマットパターンについては、OracleのAPIに全パターンが記載されています。
https://docs.oracle.com/javase/jp/8/docs/api/java/text/SimpleDateFormat.html
主なパターンは以下の表のとおりです。
文字 | 説明 | パターン | 結果 |
---|---|---|---|
G | 紀元 | G | AD |
y | 年 | yyyy yy | 2017 17 |
M | 月 | MM MMM MMMMM | 03 Mar March |
d | 日 | d dd | 1 01 |
E | 曜日 | E | Wed |
H | 時(0-23) | H HH | 0 00 |
K | 午前/午後の時(0-11) | K KK | 0 00 |
h | 午前/午後の時(1-12) | h hh | 1 01 |
m | 分 | m mm | 0 00 |
s | 秒 | s ss | 0 00 |
S | ミリ秒 | S SSS | 1 001 |
以下に、SimpleDateFormatクラスの基本的な使い方を記述します。
import java.text.SimpleDateFormat; import java.util.Calendar; public class Main { public static void main(String[] args) { Calendar cl = Calendar.getInstance(); // SimpleDateFormatクラスを使用して、パターンを設定する SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); System.out.println(sdf.format(cl.getTime())); } }
実行結果:
2017年03月27日
サンプルではSimpleDateFormatクラスのコンストラクタの引数で、フォーマットパターン“yyyy年MM月dd日”を設定しています。
次にSimpleDateFormatクラスのformatメソッドを使用して、引数にCalendarクラスのgetTimeメソッドを指定すると、パターンを“yyyy年MM月dd日”で設定した、現在の日付が表示されます。
ミリ秒まで表示する方法
ミリ秒まで表示する方法について、サンプルコードで確認しましょう。
import java.text.SimpleDateFormat; import java.util.Calendar; public class Main { public static void main(String[] args) { Calendar cl = Calendar.getInstance(); // SimpleDateFormatクラスを使用して、パターンを設定する SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss.SSS秒"); System.out.println(sdf.format(cl.getTime())); } }
実行結果:
2017年03月27日 15時58分31.789秒
曜日を表示する方法
曜日を表示する方法について、サンプルコードで確認しましょう。
import java.text.SimpleDateFormat; import java.util.Calendar; public class Main { public static void main(String[] args) { Calendar cl = Calendar.getInstance(); // SimpleDateFormatクラスを使用して、パターンを設定する SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E"); System.out.println(sdf.format(cl.getTime())); } }
実行結果:
2017年03月27日 Mon
和暦(元号)で表示する方法
Java6から和暦対応のCalendarクラスが提供されました。和暦に対応するには、Localeクラスを使います。Localeクラスを利用することで、言語や国ごとで異なる単位、記号、日付、通貨をフォーマットすることができます。
和暦で表示する方法について、サンプルコードで確認しましょう。
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; public class Main { public static void main(String[] args) { Locale jp = new Locale("ja", "JP", "JP"); Calendar cl = Calendar.getInstance(jp); // SimpleDateFormatクラスを使用して、パターンを設定する SimpleDateFormat sdf = new SimpleDateFormat("GGGGyy年MM月dd日 E", jp); System.out.println(sdf.format(cl.getTime())); } }
実行結果:
平成29年03月27日 月