LINEスタンプ発売中♪

java日付型使い方まとめ

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」(当日日付)の内容が出力されている。

 

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