SimpleDateFormatクラス
SimpleDateFormatクラスとは
Javaには日付を取得したり、日付を演算することができるCalendarクラスがあります。SimpleDateFormatは、パターンを指定し、Calendarクラスを分かりやすいようにフォーマットする機能があります。
・構造
java.lang.Object
java.text.Format
java.text.DateFormat
java.text.SimpleDateFormat
・使い方
コンストラクタの引数にパターンを入れて初期化できます。
SimpleDateFormat オブジェクト名 = new SimpleDateFormat(”フォーマットパターン”)
format()
メソッドの引数にDateオブジェクトを指定することで、コンストラクタで初期化したパターンにフォーマット化することができます。
オブジェクト名.format(date)
・使用例
以下のサンプルコードでは、CalendarクラスをSimpleDateFormatのフォーマット化機能を使うことで出力の仕方を変えています。
format()
メソッドの引数に入っているgetTime()
メソッドは戻り値にDateオブジェクトを返します。
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// Calendarクラスの生成と現在日時の出力
Calendar cl = Calendar.getInstance();
System.out.println("現在日時:" + cl.getTime());
// SimpleDateFormatでパターン指定とフォーマット
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
System.out.println("フォーマット化:" + sdf.format(cl.getTime()));
}
}
現在日時:Sun Oct 01 11:31:37 JST 2023
フォーマット化:2023年10月01日
SimpleDateFormatで使う主なパターンを使用例
・主なパターン
SimpleDateFormatに使えるパターンは指定されたものでなければいけません。ここでは主なパターンを紹介します。
・秒まで表示する方法
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");
System.out.println("フォーマット化:" + sdf.format(cl.getTime()));
・曜日を表示する方法
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日(E)");
System.out.println("フォーマット化:" + sdf.format(cl.getTime()));
・和暦(元号)で表示する方法
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
// Localeクラスの生成
Locale jp = new Locale("ja", "JP", "JP");
// Calendarクラスの生成と現在日時の出力
Calendar cl = Calendar.getInstance();
System.out.println("現在日時:" + cl.getTime());
// SimpleDateFormatでパターン指定とフォーマット
SimpleDateFormat sdf = new SimpleDateFormat("GGyy年MM月dd日(E)", jp);
System.out.println("フォーマット化:" + sdf.format(cl.getTime()));
}
}
途中でフォーマットを変更したい場合
applyPattern()
メソッドを使い、引数にコンストラクタで指定したようにパターンを指定するとフォーマットが変更されます。
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// Calendarクラスの生成と現在日時の出力
Calendar cl = Calendar.getInstance();
System.out.println("現在日時:" + cl.getTime());
// SimpleDateFormatでパターン指定とフォーマット化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日(E)");
System.out.println("フォーマット化:" + sdf.format(cl.getTime()));
//フォーマットを変更する
sdf.applyPattern("yyyyMMdd");
System.out.println("変更後:" + sdf.format(cl.getTime()));
}
}
DateFormatクラス
DateFormatクラスとは
DateFormatはSimpleDateFormatの親クラスであり、同様にフォーマット化することができます。ただし、SimpleDateFormatと違ってやり方は変わります。
・構造
java.lang.Object
java.text.Format
java.text.DateFormat
・使い方
new演算子ではなくgetInstanceメソッドを使用してインスタンスを生成します。
DateFormat df = DateFormat.getInstance()
またDateFormatには直接的にパターン指定する方法はないのでデフォルトの設定しかできません。詳細にパターン指定する場合は、前述のSimpleDateFormatを使います。
・使用例
以下のサンプルコードでは、CalendarクラスをDateFormatクラスでフォーマット化しています。
format()
メソッドの引数に入っているgetTime()
メソッドは戻り値にDateオブジェクトを返します。
import java.text.DateFormat;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// Calendarクラスの生成と現在日時の出力
Calendar cl = Calendar.getInstance();
System.out.println("現在日時:" + cl.getTime());
// DateFormatでフォーマット化
DateFormat df = DateFormat.getInstance();
System.out.println("フォーマット化:" + df.format(cl.getTime()));
}
}
現在日時:Sun Oct 01 12:13:07 JST 2023
フォーマット化:2023/10/01 12:13
Date型とString型の変換
文字列型を日付型(date)に変換
・概要
SimpleDateFormatのparse()
メソッドを使用して文字列を日付型(date)に変換します。
まずSimpleDateFormatで文字列のフォーマットを指定します。次にparse()
メソッドの引数に文字列を入れて、CalendarクラスのsetTime()
メソッドの引数に入れてセットします。
SimpleDateFormatとフォーマットと文字列のパターンが同じにしないと例外が発生します。
・使い方
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class ParseSamp {
public static void main(String[] args) {
try {
String date = "2023年10月15日 11時11分11秒";
System.out.println(date);
Calendar cl = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh時mm分ss秒");
cl.setTime(sdf.parse(date));
System.out.println(cl.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
2023年10月15日 11時11分11秒
Sun Oct 15 11:11:11 JST 2023
日付型(date)を文字列型に変換
valueOfで変換する
日付型(date)を文字列型に変換するのにvalueOf
メソッド使う場合を説明します。
valueOf
メソッドは引数に、Dateの値を指定するとString型に変換されます。
valueOfメソッドとは
valueOfメソッドは引数に指定したさまざまな型の値を、String型の文字列として返します。 このメソッドはオーバーロードされており、Date型(Object)の他にshort型、int型、long型、float型、double型など引数に指定し、簡単にString型に変換することができます。・使い方
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// Calendarクラスの生成とvalueOfメソッドで変換
Calendar cl = Calendar.getInstance();
String str = String.valueOf(cl.getTime());
// 現在日時の出力
System.out.println(str);
}
}
Mon Oct 09 20:26:47 JST 2023
SimpleDateFormatで変換する
SimpleDateFormatでパターンを指定してから、SimpleDateFormatが持つformat()
メソッドにDate型を入れると文字列型に変換できます。前述のvalueOfと違い、この方法だとパターンを指定して文字列化できます。
・使い方
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Sample {
public static void main(String[] args) {
Calendar cl = Calendar.getInstance();
System.out.println(cl.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String str = sdf.format(cl.getTime());
System.out.println(str);
Mon Oct 09 20:21:00 JST 2023
2023年10月09日 08時21分00秒