思ってるうちに元に戻ってしまって結局原因の究明もできない状態だったのですがようやく原因が判明したので修正しました。後半のタイトルも若干関係あります。レベル表記が狂う原因そもそもこのレベルが何を指してるのかといいますと、私の年齢でございます。いう漫画に、こんなネタが有りました。これからの高齢化社会、年齢を「レベル」で呼べば敬う気持ちも増すと思う。子「うわー!すごいや!!」で、ブログのデザインを直してる時にこれをふと思い出しまして。これはやるしかないな、と。(223))この漫画はいろいろと衝撃的で、高校時代に友だちに借りて授業中にサボって読んだだけなのにもかかわらず今でも忘れられないネタがたくさんあります。ネタ自体はだれでも思いつきそうなバカバカしい物が多かったりするんですが、それを敢えて漫画にしちゃうあたりとか素敵ですよね。いい加減ちゃんと揃えて買うべきなのだろうか。話がそれてしまいましたが、要は現在の日付をもとに、誕生日までの残り日数を計算して100%に向かっていき、誕生日を迎えるとレベルが1上がって%は0に戻る、という感じのことをしていたんですね。これ自体は別におかしなことはしていんですが、特定の条件がそろうと表示が壊れます。なんでそんなことが起こっていたのかというと、一言で言えばツメが甘かったんですね。オブジェクトを作ってただけなんですね。この方法がどうして問題なのかというと、次の誕生日が「今年」の、まだ未来の日付の場合に、プラス1年されて「今年の誕生日が消滅する」という現象が発生してしまうんですね。この時点での次の誕生日は2017/02/28ということになります。誕生日までの期間は、次の誕生日を求める際に年をプラス1しない」という条件分岐が必要になってきます。そのためには、日付比較を行って、今日がその範囲内に居るかどうかを調べる必要があります。PHPで日付比較なんかいろいろなやり方があるらしいのですが、一番簡単なのは文字列のママ比較しちゃうことみたいです。これで計算ズレは解消です。%部分の計算方法も載せておきます。$diff->days;みたいな感じで、今日から次の誕生日までの日数が求まります。100)って感じで求めることができます。PHPコードだとこんな感じ。うるう年かどうかがわかるので、その判定結果をもとに決めています。今年はちょうどうるう年なんで1が戻りますね。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。%d人のブロガーが「いいね」をつけました。