2008年03月01日

閏年の2月29日

今年は2008年なので閏年である。


デュエルCGIの配布ソースは、年末年始や閏年には対応していないので、対人デュエル終了から部屋の開放までの数分間がこの境界線を越える場合、部屋が開放されなくなる。


どちらも対応したつもりだったが、今日対人対戦場を見てみたら1つ開放されなくなってる部屋があった。


な、なんと閏年の判定が間違っていた。

if ($nen % 4 == 0 && $nen % 100 != 0 && $nen % 400 == 0) {$nen=366;} else {$nen=365;}

正しくはこう
if ($nen % 4 == 0 && $nen % 100 != 0 || $nen % 400 == 0) {$nen=366;} else {$nen=365;}


いや〜、お恥ずかしい限りです。
posted by はぐリン at 00:52| Comment(2) | TrackBack(0) | バグ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
ANDとORが違うとそうなるんですね。

nen/4の余りが0、「かつ」nen/100の余りが0ではない、「または」nen/400の余りが0のときは閏年で、そうでないときは1年=365日…。

まだまだCGI改造についてわからんところはありますが、Cを学んだのでここはわかります。
Posted by BURI-Z at 2008年03月01日 17:39
閏年の判定ってCのバイブルK&Rに載ってるので(旧版だとP.41とP.113。改訂版にも載ってると思うけど、今手元にないので)、これを間違えちゃうのは穴があったら入りたい心境です。
全部論理積だと何年経っても閏年にならないですね〜。
Posted by はぐリン at 2008年03月01日 17:58
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。