年度のスマートな求め方 #Java #他の言語でも考え方は一緒

開発/PG

今回はプログラミングのお話。
年度を求めるために 1月~3月 なら・・・と分岐させているソースコードをよく見かけますが、if分岐させているところがちょっとナンセンス・・・自分も昔そう書いたけど。

ということで、私が知る最もスマートな求め方を、Java で書き残しておきます。
考え方は他の言語でも流用できます。

import java.time.LocalDate;

public class Nendo {
	public static void main(String[] args) {
		final int nendo = LocalDate.now().minusMonths(3).getYear();
		System.out.println(nendo);
	}
}

上記のコードでは3ヶ月前の年を求めています。

2017年3月の3ヶ月前は 2016年12月なので 2016年度。
2017年4月の3ヶ月前は 2017年1月なので 2017年度。
ちゃんとあってますよね。

比較や分岐がありませんので、
書き直してもバグが出にくい、安心できるコードです。

あとは要件に合わせ、日付を指定可能なように LocalDate.now() を変数にしたりカスタマイズすればOKです。

お役に立てたなら幸いです。

タイトルとURLをコピーしました