Tips

【Java】年度を取得する関数

【Java】年度を取得する関数

年度を取得する関数があったりしないかなー?とネットを徘徊したのですが、やっぱりないので自分で実装しました。

以下にそのサンプルコードを載せたいと思います。
細かくコメントを振りましたので、どういう流れでどうなっているのか確認してくださいね!

Javaを動かすには

JDKのダウンロードと環境変数の設定が必要です。
上記が終わっているものとし、説明していきます。

いきなりサンプルコード

以下をメモ帳やエディタにコピペしてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;
 
class Sample{
     
    public static void main(String[] args){
         
        // 年度を求める日付を設定
        String target = "2017/01/01";
         
        try{
             
            // String→Dateへ型変換
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
            Date day = sdf.parse(target);
             
            // 呼び出し
            int year = getYear(day);
             
            System.out.println(year);
             
        } catch (Exception e) {
             
            e.printStackTrace();
             
        }
 
    }
     
    // 年度を返す
    static int getYear(Date day) {
 
        int year = 0;
        SimpleDateFormat sdf = new SimpleDateFormat("MM");
 
        // 月の取得
        String dateStr = sdf.format(day);
         
        // String→intへ型変換
        int month = Integer.parseInt(dateStr);
         
        // カレンダーオブジェクトを取得
        Calendar calendar = Calendar.getInstance();
         
        // 値をセット
        calendar.setTime(day);
         
        if (month < 4) {
            // 1~3月の場合
             
            // 西暦から-1する
            calendar.add(Calendar.YEAR, -1);
             
            // 年のみ取得
            year = calendar.get(Calendar.YEAR);
 
        }else{
            // 4~12月の場合
             
            // 年のみ取得
            year = calendar.get(Calendar.YEAR);
 
        }
 
        // 呼び出し元(mainメソッド)へ返す
        return year;
 
    }
}

動かしてみる

動かし方はこちらで紹介しています。

サンプルコードでは「2017/01/01」を指定していますので、「2016」とでればOKです!

次に日付を「2017/04/01」にしてみてコンパイルし実行すると…

ちゃんと「2017」が表示されました!

まとめ

・日付の計算を行う場合はCalendarクラスを使う。
・フォーマットを指定する、Date型に変換する場合はSimpleDateFormatクラスを使う。
・両方合わせることで年度を求める関数を書くことができる。

年度を求める日付がDate型の場合、mainメソッドに記述するのはgetYearメソッドを呼び出す処理だけでOKです。
どの言語でも日付を扱う・計算するということが発生すると思うのですが、Javaだとこういう感じで書けました。
記述量が多い(気がする)のですが、ポイントさえしっかり抑えれば難しくはないのかなと思いました。

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search