java日付型使い方まとめ

お疲れ様です。
はるさらでございます。

 

今回は備忘録としての記事になります。
Javaの日付型係の書き方を
毎回忘れてしまうんですよ・・・。

そのため、いくつかまとめていきます。

 

 

1.Calendarクラス

CalendarクラスとはJavaで日付の処理を行うためのクラスで
JDK1.1より導入。それまではDateクラスが主に使用されていた。

Calendarクラスの特徴としては
日付に対して「+1日」「-3年」などの様に
増減させる計算が可能。

 

以下、ソース

import java.util.Calendar;

public class Calendars {

	public static void main(String[] args) {

		//インスタンス化-年月日取得
		Calendar cal = Calendar.getInstance();

		int Year = cal.get(Calendar.YEAR);
		int Month = cal.get(Calendar.MONTH)+1;
		int Day = cal.get(Calendar.DATE);

		System.out.println(Year +"/" + Month +"/" + Day);


		//年月日にそれぞれ3を加算
		cal.add(Calendar.YEAR,3);
		cal.add(Calendar.MONTH,3);
		cal.add(Calendar.DATE,3);

		Year = cal.get(Calendar.YEAR);
		Month = cal.get(Calendar.MONTH)+1;
		Day = cal.get(Calendar.DATE);

		System.out.println(Year +"/" + Month +"/" + Day);

	}
}

~ざっくりと解説~

8行目から14行目で
Calendarクラスのインスタンスを作成して

getメソッドを使用して
実行したタイミングでの年月日を取得してprint文で表示。

月に関しては0~11の値で返されるため
+1をしないとずれてしまう。

 

Calendarクラスでは日付の加減算が容易にできるため
18行目から20行目で

Calendarクラスのaddメソッドを使用して
年月日にそれぞれ3を加算
加算した日付をprint文で表示させている。

実行をかけた結果がこちら

 

 

 

2.SimpleDateFormat

SimpleDateFormatとは
日付型を希望する書式で表示することが出来るクラス。

下記ソースでは、現在の日時に対して
書式の変換を行っている。

import java.text.SimpleDateFormat;
import java.util.Date;

public class Today {

	public static void main(String[] args) {

		//現在日時をフォーマットに合わせて表示させる


		//現在日時の取得
		Date d = new Date();

		//フォーマットの作成
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日E曜日");
		SimpleDateFormat sdf2 = new SimpleDateFormat("a hh時mm分ss秒");

		//フォーマットに合わせて表示
		System.out.println(sdf1.format(d));
		System.out.println(sdf2.format(d));
	}
}

↓実行結果

誤った書式を設定すると
例外(illegalargumentexception)
が発生してシステムが落ちてしまいます。

(15行目にて、年の取得をyyyyではなく、ttttで取得しようとしたため
そのようなフォーマットは使用できないため例外が発生する。)

 

3.parse

文字列を日付型に変更できる。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class AnotherDay {

	public static void main(String[] args) {

		//特定の日時をフォーマットに合わせて表示させる

		//フォーマットの作成
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");

		Date d = new Date();

		try {
			d = sdf1.parse("2002年12月12日");
		} catch (ParseException e) {
			e.printStackTrace();
		}

		System.out.println(d);
	}
}

↓実行結果

 

 

なお、指定した書式と一致していないと
例外(ParseException)が容易に起きるため注意が必要

 

12行目と17行目のフォーマットが異なっていることにより
ParseExceptionが発生している。

そのため、出力されている日付は
2002/12/12を基に日付型に変換した値ではなく
14行目で宣言した「d」(当日日付)の内容が出力されている。

 

他にも日付型で悩んだ箇所があったら
追記していこうと思います。

カテゴリー: java