「本日更新」と出ていたデータは、昨日のものでした
📌 記事の取り扱いについて(公開当時の内容を含みます — タップで詳細)
本記事は公開当時の体験・気づきをまとめたものです。現在のツール数・プラン数・対象年齢・記事数・仕様とは異なる場合があります。最新の内容は各ツールページをご確認ください。ツールや外部サービスの仕様・料金は変更されることがあるため、利用前には各公式情報も併せてご確認ください。記載に誤りを見つけられた場合はお問い合わせフォームよりご連絡いただけると助かります。
表示と実感が、一日ずれていました
ホテル検索では、データがいつ時点のものかを画面に出しています。古い値段を見せてしまうのが怖いので、鮮度が分かるようにしておきたいからです。
あるとき、その表示に違和感を持ちました。更新したのは前の日のはずなのに、「本日更新」と出ているのです。同じように、二日前のものが「昨日」と出ていることもありました。全体に、一日ぶん新しいほうへずれています。
経過時間を、日数として数えていました
原因は、日数の数え方にありました。
私は、更新した時刻から今までに経過した時間を、24で割り、端数を切り捨てて日数にしていました。24時間経っていなければ0日、つまり「本日」です。素直な計算に見えます。
ところが、これは日付の差とは違います。たとえば前の日の夜遅くに更新して、翌日の朝に見た場合。経過しているのは十数時間なので、この計算では「本日」になります。でも、カレンダーの上では日付が一日変わっています。人が「本日」と読んだときに期待するのは、カレンダーのほうです。
私が使っていた「24時間で1日」という数え方は、時間の長さの話であって、日付の話ではありませんでした。
日付そのもので数え直しました
直し方は、時・分・秒を考えず、カレンダーの日付だけで引き算することでした。更新した日と今日の日付を比べて、その差を出します。これなら、何時に更新しようと、日付が変われば1日です。
直したあと、表示が実感と合うようになりました。「本日」と書いてあれば本当に今日で、「昨日」と書いてあれば昨日です。当たり前のことが当たり前に出るようになっただけですが、鮮度の表示は信用が命なので、ここがずれているのは気持ちが悪いものでした。
学び・似ている計算ほど、取り違えます
この件は、時間の引き算と、日付の引き算は別物という、書いてしまえば当然の話です。
ただ、作っているときは気づきませんでした。どちらも「差を出す」計算で、答えも数字で出るので、同じもののように見えるのです。しかも同じ答えになる場面も多い。見る時刻が前日の更新時刻より早いあいだは、まるごと一日ずれたままなのに、それより後に見れば合ってしまうのです。
こういう「合っているときもある」計算は、確かめるのが難しいです。試すのがいつも同じような時間帯だと、ずっと正しく見えます。ときどきしか間違えないものほど、間違いに気づくのが遅れる。 日付や時刻を扱うところは、今後も少し疑ってかかろうと思いました。
それと、この表示は「古くなったら警告を出す」という役目も持っています。つまり、日数の数え方がずれると、警告が出るべきときに出ないことになります。ただの表示のずれのつもりが、見張り役の目盛りまでずらしていたわけです。表示と判定が同じ計算を使っているところは、片方だけ直して安心しないよう気をつけたいと思いました。
← 他の制作記を見る | トップ | お問い合わせ