年度を取得する関数があったりしないかなー?とネットを徘徊したのですが、やっぱりないので自分で実装しました。
以下にそのサンプルコードを載せたいと思います。
細かくコメントを振りましたので、どういう流れでどうなっているのか確認してくださいね!
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だとこういう感じで書けました。
記述量が多い(気がする)のですが、ポイントさえしっかり抑えれば難しくはないのかなと思いました。