static / dates

静的ページの「今日」と「現在」が古いまま残る欠陥を、日付の書き方で直した記録

静的に書き出したページに「今日」「現在」と書くと、作り直すまでその文が前日のまま公開されます。年のない「10月2日(金)現在」は、検索結果で別の年に見えました。日付が過ぎた行事を「開催されました」と書いたら、中止になった行事にも出ていました。この面は、日付まわりで実際に起きた3つの欠陥を、点検の手順と直し方つきで残した記録です。

このサイトはAnthropicの公式サイトではありません。Claude Codeの機能・料金・提供範囲は変わる可能性があるため、重要な判断の前には公式のドキュメントと自分のアカウント設定を確認してください。

先に結論:日付には3つの別々の欠陥がある

欠陥症状確かめ方
今日が古いまま作り直しの前の時間帯、前日の日付を「今日」と出す日付が変わった直後の0時台に本番を開く
年のない日付検索結果で曜日の合う別の年が出る日付の行と構造化データの日付を全部洗う
終わった日付の断定日付が過ぎただけで「開催されました」と書く終了の枠の文言を3通りに分けて確かめる

どれも本文は一見正しく、タイトルも正しいまま、日付まわりだけが読み手に嘘をつきます。見つけるには本番のHTMLを日付の目で読み直すしかありませんでした。ここでは、それぞれの確かめ方と直し方を並べます。公開後の確認は、上げた後に本番を確かめる手順と同じ考え方です。

確かめる手順:自分のサイトで日付の欠陥を洗い出す

  1. 本文に「今日」「明日」「本日」「現在」「更新」「時点」「次回」「最終」を含むページを、本番のHTMLから全数検索する。
  2. その近くにある「YYYY年M月D日」を拾い、最新のものが30日以上古いページを報告する。自動で更新すると書いたページ(「定期確認」「自動取得」など)は14日で報告する。
  3. 年を含まない日付(「10月9日(金)現在」の形)を、ページ本文とJSON-LDのdate系の項目から探す。
  4. 終了した行事のページの、終了を知らせる枠の文言を全部集め、「開催されました」と書いてよい根拠があるかを見る。
  5. 走査の対象にヘッダーやナビゲーションのmain外も入れる。本文だけを見ると、全ページに出る部分を取りこぼします。

検出に出た件数だけで判断せず、文脈を出力させます。過去の開催日を載せた「開催日 2025年9月7日(日)」は正常で、確認日ではありません。自分が入れた「〜を差し替えた」という修正コメントに元の文言を書くと、検証がそれを残存と誤判定するので、検証はコメントを除いてから行います。

記録1:作り直しは毎朝8時20分、0時から8時20分は前日

2026年11月1日の朝、あるサイトの「今日(10月31日)」の欄が前日のまま出ていました。作り直しが毎朝8時20分に走るため、毎日0時から8時20分までは前日の日付です。定期実行を0時台に動かすだけでは、パソコンが止まっている日に同じことが起きます。

直し方は、日付で変わる欄を専用の区切りで囲み、翌日以降3日分をtemplate要素として作り、見る人の日本時間の日付でJavaScriptが入れ替える形です。「今日」の文字は、JavaScriptがつけるラベルでだけ出します。HTMLそのものには日付だけを置くので、JavaScriptが動かない場合や、作り直しが止まった場合も、前日を今日と言いません。4日以上止まると「更新が遅れています」と表示します。

別のやり方もあります。全ページを書き換えず、内部リライトで1本のラッパーPHPに通して、リクエスト時に加工する型です。219ページが終了済みで毎日増えるサイトで使いました。cronが要らず、元のHTMLを返す安全側のフォールバックがあり、戻すときは.htaccessの1ブロックを消すだけです。ただしPHPで置換文字列を組むとき、日付が数字で始まると後方参照と解釈されて壊れました。${1}の形で書く必要があります。台帳に載っていないページには何も起きないので、動作確認と網羅は別に確かめます。

記録2:年のない日付が、検索結果で2020年に見えた

2026年10月9日、運営者のスマホで検索すると、あるサイトのトップが1番目に出ましたが、日付が「2020/10/02」と6年前に表示されていました。原因は、トップの予約の箱が毎日「10月9日(金)現在」と年のない日付を出しているだけで、ページに他の日付が無かったこと、構造化データにも日付の項目が無かったことです。Googleが10月2日にそのページを読んだとき、「10月2日(金)」から年を推測し、曜日の合う2020年を選びました。

調べると、2026年の3月から12月は306日すべてで、曜日が2020年と同じでした。2020年はうるう年で、3月以降の並びが2026年と一致するからです。年を書かない限り、この時期はどのサイトでも同じ取り違えが起こりえます。

直し方は、日付の行に年を入れることでした。トップだけ「2026年10月9日(金)現在」に変え、翌朝、共有の部品にも年を入れて、同じサーバーの42サイトに効かせました。日程の各行は年なしのまま残しています。ページの日付になるのは「現在」の行だけだからです。手元の元ファイルも揃えました。古い版から上げ直すと年が消えるからです。検索結果の日付がおかしいときは、まずページ内の日付(年のないもの、構造化データのdate系)を全部洗います。

記録3:日付が過ぎただけで「開催されました」と書いていた

2026年10月21日、花火の催しを扱うサイトの「2026年の記録」の型で、終了の枠が日付だけを見て一律に「開催されました(終了)」と出していることを、担当が自分で見つけました。荒天で中止になった催しにもその文が出ており、開催後の発表で確かめていない42面にも出ていました。

天候や事故で中止や順延があるので、日付が過ぎたことは開催の証拠にはなりません。当日朝の「予定どおり開催します」も、開催の証拠ではありません。終わった行事の面は、3通りに分けました。

状態根拠出す文
開催(held)開催後の主催・自治体の発表(終了のお知らせ、御礼、開催報告)で確かめた開催されました
中止(cancelled)公式の中止の発表中止になりました
それ以外確かめていない開催予定でした(日付は過ぎています)

本文の年ごとの記録も同じで、その年の出典に無い結果は空欄にします。毎朝の自動取り込みや、一括で記録にする道具にも、この3分けを入れました。

もう1つの欠陥が、数か月前で止まった「本日」の表示です。2026年8月15日に、イベント系の2サイト、約350ページを走査したところ3件見つかりました。そのうち1件は796表示、127クリック、CTR15.95%、5.2位の主力ページで、7週間前の予行を「本日」のバッジつきで出していました。クリックした人が、終わった予行の時刻を読まされていたことになります。直すときは削除で終わらせず、その時点で本当に次に来るものへ差し替えました。

日付を書くときの決まり

  • ページに日付を出すときは年まで書く。「現在」「更新」「時点」の行は特に。
  • 「今日」の文字は、見る人の端末の日付で決める部品でだけ出す。HTMLに直書きしない。
  • 終わった行事は、確かめた根拠の種類で文を分ける。日付だけで「開催されました」と書かない。
  • 共有の部品を直すときは、全サイトに一度に効く。試しの最中のサイトにも同時に入るので、日時を台帳に残す。

日付が絡む欠陥は、戻された変更と回帰の記録とも重なります。自動化が壊れても、画面は壊れて見えないからです。

よくある質問

年のない日付は、すべて危険ですか。

ページの日付として機能する行(現在、更新、時点)が危険です。日程の各行のように、文脈で年が明らかな行は年なしでも実害は出にくいですが、ページ全体の日付が年のない1行だけの場合は、検索側が年を推測します。

静的なページに「今日」を出す、いちばん安全な方法は何ですか。

HTMLには日付だけを置き、「今日」「明日」の文字は、見る人の日付で決まるJavaScriptの札でだけ出す方法です。JavaScriptが動かない場合も、作り直しが止まった場合も、前日を今日とは言いません。

開催後の発表が見つからないときは、何と書けばよいですか。

「開催予定でした(日付は過ぎています)」と書きます。開催された、中止された、のどちらも確かめられていないからです。確かめられたら、その根拠の出典と一緒に書き換えます。

次に読むページ