お疲れ様です。
はるさらでございます。
今回は備忘録としての記事になります。
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」(当日日付)の内容が出力されている。
他にも日付型で悩んだ箇所があったら
追記していこうと思います。