2009-09-01

http://anond.hatelabo.jp/20090831161712

yearのうるう年の処理

うるう年の処理は

  1. 400で割り切れる年はうるう年
  2. それ以外で100で割り切れる年は平年
  3. それ以外で4で割り切れる年はうるう年
  4. それ以外は平年

という処理なら分かる。でも実際のコード

  1. 400年から799年まではうるう年
  2. それ以外で100年から199年は平年
  3. それ以外で4年から7年まではうるう年
  4. それ以外は平年

という処理になってる。

あと、urの処理で頭が混乱してると思うので、

  • i年の秒数加算(urで判定させつつ)
  • (i+1)年のur(うるう年)の判定

で2パートに分けると、わかりやすくなるよ。

monthの処理

  • n月以上なら、(n-1)月の秒数を足す

という処理が、実際のコード

  • n月なら、(n-1)月の秒数を足す

という表現になっていて、3月以降の加算が無効になってる。

off-by-one error(一個外れエラー)にならず、正しく書けているところ、

3月以降に、ちゃんとうるう年の処理が入ってるところは素敵。

演算子を正しく理解すれば、上達するはず。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん