GregorianCalendar

java.util.GregorianCalendar(int,int,int)のコンストラクタは,引数にデフォルト・タイムゾーンの年,月,日を取りますが,2つ目の月を表すパラメータだけ0から始まります。例えば,2月の場合1を指定します。今日はこれにはまって,たぶん30分くらい時間を浪費しました。

開始日から終了日までに経過した月数(半端な日にちは繰り上げ)を計算するのに使いました。こんなロジックです。

  1. 年,月,日のそれぞれの成分の差を計算する
  2. 日の差が0か正の場合,月の差をインクリメントする
  3. 月の差が負の場合,年の差をデクリメントして,月の差に12を足す
  4. 年の差に12を掛けたものに月の差を足す

今思えば,3つ目は4つ目でカバーされるので冗長でした。

全然仕事とは関係ないのですが,まあ暇つぶしというか,自分にとっては大事というか。