0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Java入門】Calendarクラスの日付フォーマットを指定する方法(SimpleDateFormat,DateFormat)

Last updated at Posted at 2023-10-01

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オブジェクトを返します。

Calendarクラスをフォーマット化して出力
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 API)

・秒まで表示する方法

年 月 日 時 分 秒
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オブジェクトを返します。

DateFormatでフォーマット化
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とフォーマットと文字列のパターンが同じにしないと例外が発生します。

・使い方

文字列⇒Date型
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型に変換することができます。

・使い方

Calendar⇒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と違い、この方法だとパターンを指定して文字列化できます。

・使い方

Date型⇒文字列
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秒
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?