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