2010年10月06日

簡潔なアルゴリズム。

ちょっとしたことだけど、なるほど〜。と感じたことのあるアルゴリズム。

これらを実現するのに、たまにスパゲッティプログラムを見かける。。。

シンプルに実現できると気持ちがいいもんだし、メモっておく。

・うるう年。

「4で割り切れて、かつ100で割り切れない年。ただし、400で割り切れたらうるう年」

if((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))) {
  return true;
}


・生年月日から現在の年齢を算出。

「(現在の西暦(int) − 生年月日(int)) / 10000」

int age = (20100929 - 19780908) / 10000;


・2つの日付の差を求める

long diff = date.getTime() - date2.getTime();

return ( diff / 1000 / 60 / 60 / 24 );


・ある期間Aと期間Bが重複しているか。

「 Aの開始 ≦ Bの終了 && Bの開始 ≦ Aの終了が真の時」

上記の日付の差を求めるメソッドを使って。

boolean flg1 = (getBetweenDay(ed_BDate, st_ADate) >= 0);
boolean flg2 = (getBetweenDay(ed_ADate, st_BDate) >= 0);

return (flg1 && flg2);


また、思い出したり、見かけたりしたら追加していこうっと。
posted by hana at 20:38| Comment(0) | TrackBack(0) | JAVA | このブログの読者になる | 更新情報をチェックする