Javaでは、日時を操作したり、指定した形式で文字列に変換するために、SimpleDateFormat
クラスを使います。特に、ユーザーに表示する際の日時フォーマットや、文字列から日時をパースする際に役立ちます。
本記事では、SimpleDateFormat
の使い方を具体例を交えて紹介します。
SimpleDateFormatの基本
SimpleDateFormat
は、日時の文字列操作(フォーマットとパース)に使用されるクラスです。
JavaのDate
オブジェクトを文字列に変換する際に指定したフォーマットで出力したり、逆に指定した形式の文字列をDate
オブジェクトとして解釈することができます。
基本構文:
SimpleDateFormat sdf = new SimpleDateFormat("フォーマット");
ここで、フォーマット
は日付や時刻の形式を指定する文字列です。
フォーマット指定の例
フォーマット指定は、以下のような記号で行います。
よく使われる記号をいくつか紹介します。
記号 | 説明 | 例 |
---|---|---|
y | 年 | yyyy -> 2023 |
M | 月 | MM -> 07 |
d | 日 | dd -> 21 |
H | 時(24時間制) | HH -> 14 |
h | 時(12時間制) | hh -> 02 |
m | 分 | mm -> 30 |
s | 秒 | ss -> 45 |
a | 午前/午後 | a -> AM/PM |
日時のフォーマット(Date → String)
まず、現在の日付を指定した形式で文字列に変換する例を見てみましょう。
SimpleDateFormat
を使うことで、Date
オブジェクトを任意の形式で文字列に変換できます。
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String formattedDate = sdf.format(now);
System.out.println("現在日時: " + formattedDate);
}
}
この例では、現在の日時が「年/月/日 時:分:秒」の形式で表示されます。
例えば、2023/10/03 14:25:30
のような結果が得られます。
文字列から日時にパース(String → Date)
指定された形式の文字列を、Date
オブジェクトに変換することも可能です。
parse()
メソッドを使用し、文字列を日時として解釈します。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
String dateStr = "2023/10/03 14:25:30";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
try {
Date date = sdf.parse(dateStr);
System.out.println("パースした日時: " + date);
} catch (ParseException e) {
System.out.println("日付のパースに失敗しました");
}
}
}
このコードでは、文字列"2023/10/03 14:25:30"
がDate
オブジェクトに変換され、日時として出力されます。
よく使うフォーマット例
目的 | フォーマット | 例 |
---|---|---|
日付(年-月-日) | "yyyy-MM-dd" | 2023-10-03 |
日付(年月日) | "yyyy年MM月dd日" | 2023年10月03日 |
日付と時刻(24時間制) | "yyyy/MM/dd HH:mm:ss" | 2023/10/03 14:25:30 |
日付と時刻(12時間制) | "yyyy/MM/dd hh:mm:ss a" | 2023/10/03 02:25:30 PM |
日本の形式(和暦) | "GGGGy年MM月dd日" | 令和5年10月03日 |
日時のフォーマットとパースの注意点
- フォーマットと入力形式が一致していること:
parse()
メソッドで文字列をDate
に変換する際は、入力された文字列が指定フォーマットと一致している必要があります。 - 日時の操作:
SimpleDateFormat
は日時のフォーマットやパースを行いますが、日時の操作(加算や減算)は別途Calendar
やLocalDateTime
などで行います。
まとめ
SimpleDateFormat
は、日時を扱う上で非常に便利なクラスです。
フォーマット指定によって、任意の文字列形式に変換したり、文字列からDate
オブジェクトへの変換も可能です。SimpleDateFormat
のフォーマット指定を理解することで、日時データの操作がより簡単になります。様々なフォーマットの組み合わせを試して、要件に合った形式で日時を扱いましょう。
コメント