日付を扱うとどうしても
思い通りにならず、苦手意識をもたれがちな
Date, Calendarの処理です。
私自身もよく調べます。
自分へのメモも兼ねて
Calendar ⇔ String について記載します。
Date型について登場しますが
Date型も苦手な方こちらで解説してます。
Calendar型をString型に変換
JavaのCalendar
オブジェクトをString
に変換するには、SimpleDateFormat
を使用することができます。SimpleDateFormat
は、指定した書式で日付をフォーマットしたり、解析したりするためのクラスです。
Calendar型 → String型変換コード
例えば、Calendar
オブジェクトをyyyy/MM/dd
形式の文字列に変換するには、次のようにします。
try {
SimpleDateFormat sf =
new SimpleDateFormat("yyyy年MM月dd日");
String birthday = "1999年12月31日"
// 文字列をDate型へ
Date birthDate = sf.parse(birthday);
// カレンダーインスタンス
Calendar cal = Calendar.getInstance();
// Dateをカレンダーへ
cal.setTime(birthDate);
} catch (ParseException e) {
// 変換失敗
}
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// カレンダー型を定義
Calendar calendar = Calendar.getInstance();
// 出力フォーマットを設定
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
// Calendar型をString型に変換
String strDate = sdf.format(calendar.getTime());
System.out.println(strDate);
}
}
// 実行結果
2023/03/20
実行結果より指定したフォーマットで年月日が出力されていることが確認できます。
String型の日付をDate型、Calendar型に変換
String型の日付に対して、Date型やCalendar型に変換する方法を解説します。
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
try {
SimpleDateFormat sf =
new SimpleDateFormat("yyyy年MM月dd日");
// String型の日付を定義
String birthday = "1999年12月31日"
// 文字列をDate型へ
Date birthDate = sf.parse(birthday);
// カレンダーインスタンス取得
Calendar cal = Calendar.getInstance();
// Dateをカレンダーへ
cal.setTime(birthDate);
} catch (ParseException e) {
// 変換失敗
System.out.println("変換処理に失敗");
}
}
}
上記のやり方でString型をDate型やCalendar型に変換が行なえます。使用する状況に合わせてそれぞれ変換できるように覚えておきましょう。