無理しないでゆっくり休んでね!

【Java】SimpleDateFormatで日時の文字列操作を行う方法

Javaでは、日時を操作したり、指定した形式で文字列に変換するために、SimpleDateFormatクラスを使います。特に、ユーザーに表示する際の日時フォーマットや、文字列から日時をパースする際に役立ちます。

本記事では、SimpleDateFormatの使い方を具体例を交えて紹介します。

SimpleDateFormatの基本

SimpleDateFormatは、日時の文字列操作(フォーマットとパース)に使用されるクラスです。

JavaのDateオブジェクトを文字列に変換する際に指定したフォーマットで出力したり、逆に指定した形式の文字列をDateオブジェクトとして解釈することができます。

基本構文

SimpleDateFormat sdf = new SimpleDateFormat("フォーマット");

ここで、フォーマットは日付や時刻の形式を指定する文字列です。

フォーマット指定の例

フォーマット指定は、以下のような記号で行います。

よく使われる記号をいくつか紹介します。

記号説明
yyyyy -> 2023
MMM -> 07
ddd -> 21
H時(24時間制)HH -> 14
h時(12時間制)hh -> 02
mmm -> 30
sss -> 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は日時のフォーマットやパースを行いますが、日時の操作(加算や減算)は別途CalendarLocalDateTimeなどで行います。

まとめ

SimpleDateFormatは、日時を扱う上で非常に便利なクラスです。

フォーマット指定によって、任意の文字列形式に変換したり、文字列からDateオブジェクトへの変換も可能です。SimpleDateFormatのフォーマット指定を理解することで、日時データの操作がより簡単になります。様々なフォーマットの組み合わせを試して、要件に合った形式で日時を扱いましょう。

コメント

タイトルとURLをコピーしました