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


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

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

Javaを動かすには

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

いきなりサンプルコード

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

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だとこういう感じで書けました。
記述量が多い(気がする)のですが、ポイントさえしっかり抑えれば難しくはないのかなと思いました。

  • このエントリーをはてなブックマークに追加

PAGE TOP