1. ホーム
  2. ジャバスクリプト

[解決済み】Webサイトで現在の年を印刷する最短の方法

2022-04-15 01:07:28

質問

フッターに著作権の日付がハードコードされている数百の静的なHTMLページを更新する必要があります。それを、毎年自動的に更新するJavaScriptに置き換えたいのです。

現在使っているのは

<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>

これくらい短い方がいいのかな?

解決方法は?

数年後、別のことをしているときに思い出した。 Date() (なし new ) は文字列を返し、その方法は は、私のオリジナルである下記が来たときよりも1文字短くなりました。

<script>document.write(/\d{4}/.exec(Date())[0])</script>

から4桁の文字列の最初の列が表示されます。 Date() を年号として指定します。 . (以下の私の最初の回答が投稿されたときには、そのような動作は指定されていませんでした - 一般的ではありましたが -。).

もちろん、この解決策はあと7979年(この記事を書いている2021年時点)しか有効ではありません。10000年時点では、"10000"の代わりに"1000"と表示されるからです。


JavaScriptでの解決策を求められたので、最短のものを紹介します。

<script>document.write(new Date().getFullYear())</script>

これは私が遭遇したすべてのブラウザーで動作します。

そこに至る経緯

  • を呼び出せばいいのです。 getFullYear を直接、新しく作成された Date であれば、変数は必要ありません。 new Date().getFullYear() は少し奇妙に見えるかもしれませんが、信頼できるものです。 new Date() の部分が最初に行われ、次に .getFullYear() .
  • をドロップすることができます。 type これは、JavaScript がデフォルトであるためです。 HTML5仕様 この場合、ブラウザがすでに行っていることを書き上げている可能性があります。
  • JavaScript には "automatic semicolon insertion, " があるので、1 文字余分に保存するために最後のセミコロンを削除することができます。 軽蔑 しかし、このような特殊なケースで使用する場合は、十分安全であると言えます。

注意すべきは、JavaScriptが有効なブラウザでしか動作しないことです。理想を言えば、これはオフラインのバッチジョブとして処理するのがよいでしょう ( sed スクリプトを *nix 上で実行するなど) を年に1回実行する必要がありますが、JavaScript のソリューションを求めるのであれば、それは限りなく短いものであると思います。(今、私は運命を誘惑してしまった)。


しかし が可能なサーバーを使用していない限り、そのようなことはありません。 のみ 静的ファイルを提供するのであれば、テンプレートエンジンを使ってサーバー上でこれを行い、キャッシュヘッダを使って、日付が変わるまで結果のページをキャッシュできるようにしたほうがよいかもしれません。そうすれば、クライアント側でJavaScriptを使う必要はありません。非 defer / async script タグがコンテンツに含まれていると、ページの解析と表示が一時的に遅くなります (まさにこの理由からです。スクリプトのコードが document.write を出力する)。