ココでわかるAndroidアプリ開発

あなたのプログラミングを徹底サポート

【Java】日時の取得や計算 - Calendarクラスの使い方

  • 作成日:2022/01/29
  • 更新日:2022/01/31

Javaで日時を扱う場合はCalendarクラスが便利です。 Calendarクラスは日時を取得したり計算したりできるものです。

現在の日付を取得したり、+1日や-1日などの計算も可能です。 主な使い方を解説していきます。

現在の日時を取得する

現在の日時はgetメソッドを使います。

App.java

import java.util.Calendar;
import java.util.Date;

public class App {
    public static void main(String[] args) {     
        
        Calendar calendar = Calendar.getInstance();
        Date now= calendar.getTime();    
    
        System.out.println(now);                
    }
}

まず日付に関するクラスを使うため2,3行目のインボートを忘れないようにしましょう。 8行目でCalendarクラスのインスタンスを取得しています。 Calendarクラスの場合はnewを使いません。

9行目で取得したインスタンスの日時を取得しています。日時はgetTimeメソッドで取得できます。戻り値はDate型です。

実行結果

Fri Jan 28 14:50:51 JST 2022

SimpleDateFormatを使えば、実行結果を「2022/01/28」のように、フォーマットすることもできます。詳しくは以下で解説しています。

年・月・日だけを取得する

Calendarクラスは年だけ、月だけ、日だけを個別に取得することも可能です。

App.java

import java.util.Calendar;
import java.util.Date;

public class App {
    public static void main(String[] args) {     
        
        Calendar calendar = Calendar.getInstance(); 
    
        int year=calendar.get(Calendar.YEAR);   //年を取得
        int month=calendar.get(Calendar.MONTH); //月を取得
        int date=calendar.get(Calendar.DATE);   //日を取得
        
        System.out.println(year);
        System.out.println(month);
        System.out.println(date);           
    }
}

10~12行目のgetメソッドで、現在の年・月・日を取得しています。 引数はCalendarクラスで定義されているCalendar.YEARなどを使います。

ただし、月に関しては始まりが0からなので、現在の月から-1された値が取得されます。

実行結果

2022
0
28

これは1月に実行した結果ですが、月が0になっていますね。 なので、現在の月を表現したい場合は、取得した値に+1をする必要があります。

加算・減算する

Calendarクラスは年・月・日の計算も可能です。10~12行目で加算・減算しています。

App.java

import java.util.Calendar;
import java.util.Date;

public class App {
    public static void main(String[] args) {     
        
        Calendar calendar = Calendar.getInstance(); 

        calendar.add(Calendar.YEAR, 1);     //年を+1
        calendar.add(Calendar.MONTH, 2);    //月を+2
        calendar.add(Calendar.DATE, -1);    //日付を-1
    
        int year=calendar.get(Calendar.YEAR);   //年を取得
        int month=calendar.get(Calendar.MONTH); //月を取得
        int date=calendar.get(Calendar.DATE);   //日を取得
        
        System.out.println(year);
        System.out.println(month);
        System.out.println(date);           
    }
}

計算にはaddメソッドを使います。2022年1月28日に対して上記の加算・減算すると次のようになります。

実行結果

2023
2
27

上述した通り、月は現在の月の-1となるので、1月に+2をすると2という結果になります。

日時を設定する

Calendarクラスで取得したインスタンスに指定の日時を設定する方法です。

App.java

import java.util.Calendar;
import java.util.Date;

public class App {
    public static void main(String[] args) {     
        
        Calendar calendar = Calendar.getInstance(); 
        
        //年・月・日を個別に設定
        calendar.set(Calendar.YEAR, 2010);
        calendar.set(Calendar.MONTH, 3);
        calendar.set(Calendar.DATE, 10);
        System.out.println(calendar.getTime());
        
        //年月日をまとめて設定
        calendar.set(2020, 4, 25); 
        System.out.println(calendar.getTime());
        
        //年月日+時間を設定
        calendar.set(2030, 1, 1, 12, 30);
        System.out.println(calendar.getTime());
    }
}

日時の設定はsetメソッドを使います。引数により設定できるものが異なります。 11~13行目では年・月・日を別々に設定しています。

17行目では年月日をまとめて設定していて、18行目ではさらに時間も合わせて設定しています。

実行結果

Sat Apr 10 20:13:42 JST 2010
Mon May 25 20:13:42 JST 2020
Fri Feb 01 12:30:42 JST 2030

注意点としては、月は0始まりなので、通常は0~11の値を設定します。例えば、4月を設定したい場合は3を設定します。

月の設定に12以上を設定することもできますが、その場合は12が0、13が1・・といったようになります。

Date型をCalendar型へ変換する

Date型も日時を扱えるクラスですが、Date型で取得した日時をCalendar型に変換することが可能です。 CalendarクラスのsetTimeメソッドを使います(11行目)。

App.java

import java.util.Calendar;
import java.util.Date;

public class App {
    public static void main(String[] args) {     
        
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        
        calendar.setTime(date);
        
        System.out.println(calendar.getTime());
    }
}

8行目でDateクラスのインスタンス生成をして現在の日時を取得しています。 11行目のsetTimeメソッドは引数にDate型のインスタンスを渡すことで、Calendar型に変換してくれます。

上記の例だとsetTimeメソッドの引数に、現在の日時情報をもったdate変数を渡すことで、 calendar変数にdate変数の日時情報を変換して格納しています。

実行結果

Sat Jan 29 01:37:33 JST 2022

この記事のシェアはこちらから

カテゴリー

カテゴリーの一覧です。

Contact

当サイトへのご連絡は以下よりお願いします。

© Copyright 2022 ココでわかるAndroidアプリ開発