JavaのSimpleDateFormatクラスで年をフォーマット・解析する方法を徹底解説
SimpleDateFormatクラスとは
java.text.SimpleDateFormatクラスは、文字列を日付(Date)に変換したり、日付を指定した形式の文字列にフォーマットしたりするために使用されるクラスです。日付文字列を解析(パース)する基本的な手順は以下の通りです。
- 希望するフォーマット文字列を引数に渡して、SimpleDateFormatクラスをインスタンス化します。
- parse()メソッドを使って、日付文字列をDateオブジェクトとして解析します。
基本的な使用例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String args[]) throws ParseException {
SimpleDateFormat formatter1 = new SimpleDateFormat("HH:mm:ss");
Date time1 = formatter1.parse("07:25:30");
System.out.println("日付の値: " + time1);
SimpleDateFormat formatter3 = new SimpleDateFormat("hh 'o''clock' a");
Date time3 = formatter3.parse("09 o'clock AM");
System.out.println("日付の値: " + time3);
}
}実行結果
日付の値: Thu Jan 01 07:25:30 IST 1970 日付の値: Thu Jan 01 09:00:00 IST 1970
このように、フォーマット文字列を指定するだけで、さまざまな形式の日付文字列を柔軟に解析できます。
年のフォーマットに使えるパターン文字
SimpleDateFormatクラスで「年」を扱う際には、以下の2種類のパターン文字を使用します。
| 文字 | 意味 | 例 |
|---|---|---|
| y | 年(Year) | 2005、96 |
| Y | 暦週の年(Week year) | 2005、96 |
yは通常の暦上の年を表し、Yは週の基準に従った「暦週の年」を表します。年末年始の扱いが異なるため、用途に応じて使い分けることが重要です。
年を含む日付の解析例
次の例では、SimpleDateFormatクラスを使って、年を含むさまざまな形式の日付文字列を解析する方法を示しています。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Example {
public static void main(String args[]) throws ParseException {
// yyyy/dd/MM 形式で解析
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/dd/MM");
Date date = formatter.parse("2007/25/06");
System.out.println("日付の値: " + date);
// y:G 形式で解析(紀元も含む)
formatter = new SimpleDateFormat("y:G");
date = formatter.parse("1920:BC");
System.out.println("日付の値: " + date);
// D-M-Y 形式で解析
formatter = new SimpleDateFormat("D-M-Y");
date = formatter.parse("25-05-1989");
System.out.println("日付の値: " + date);
}
}実行結果
日付の値: Mon Jun 25 00:00:00 IST 2007 日付の値: Sun Jan 01 00:00:00 IST 1920 日付の値: Sun Jan 01 00:00:00 IST 1989
まとめ
SimpleDateFormatクラスを使えば、yyyyやyなどのパターン文字を組み合わせることで、年を含む多様な日付形式を自由に解析・フォーマットできます。なお、Java 8以降ではスレッドセーフなjava.timeパッケージ(DateTimeFormatterなど)の利用も推奨されているため、新規開発では状況に応じて使い分けるとよいでしょう。
-
JavaのLocalDateTimeクラスでテーブルにローカル日時を設定する方法を解説
Java 8のjava.timeパッケージには、現在のローカル(地域)の日付と時刻を取得するためのLocalDateTimeクラスが用意されています。このクラスを利用すると、日付や時刻の値だけでなく、年間通算日(day-of-year)、曜日(day-of-week)、年内週番号(week-of-year)といった他の日付・時刻フィールドも取得できます。 テーブルのカラムにローカル日時を設定する手順 テーブルのカラムにローカルの日付・時刻値を設定するには、以下の3つのステップを実行します。 ステップ1:LocalDateTimeオブジェクトを取得する 静的メソッドnow()を呼び出すことで、L
-
【Java入門】SimpleDateFormatクラスでDate型を任意の形式の文字列に変換する方法
JavaのSimpleDateFormatクラスは、Dateオブジェクトを指定したパターンの文字列(String)に変換したり、その逆に文字列からDateへ変換したりするために使用されるクラスです。日付の表示形式を自由にカスタマイズできるため、実務でも非常によく利用されます。SimpleDateFormatの基本的な使い方以下のサンプルコードでは、今日の日付を取得し、「yyyy-MM-dd-hh.mm.ss」というパターンで文字列に変換してコンソールに出力しています。サンプルコードimport java.util.Date; import java.text.SimpleDateFormat;