フッターに著作権の日付がハードコードされている数百の静的HTMLページを更新する必要があります。毎年自動的に更新されるJavaScriptに置き換えたいと思います。
現在、私は使用しています:
<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>
これは短くなりますか?
これは私がそれを得ることができる最短です:
<script>document.write(new Date().getFullYear())</script>
それは私が遭遇したすべてのブラウザで動作します。
私がそこに着いた方法:
getFullYear
でDate
を直接呼び出すだけで、変数は不要です。 new Date().getFullYear()
は少し奇妙に見えるかもしれませんが、信頼できます:new Date()
の部分が最初に行われ、次に.getFullYear()
が行われます。type
をドロップできます。これは HTML5仕様 の一部としても文書化されており、この場合、ブラウザが既に実行していることを記述している可能性があります。JavaScriptが有効になっているブラウザでのみ機能することに注意してください。理想的には、これは年に一度、オフラインバッチジョブ(* _nixなどのsed
スクリプト)としてより適切に処理されますが、JavaScriptソリューションが必要な場合は、それはできるだけ短いと思います。 (今、私は行って、運命を誘惑しました。)
TJの答えは優れていますが、HTMLが既にレンダリングされており、document.writeスクリプトが日付だけですべてのページコンテンツを上書きするというシナリオに遭遇しました。
このシナリオでは、次のコードを使用して、既存の要素にテキストノードを追加できます。
<div>
©
<span id="copyright">
<script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
</span>
Company Name
</div>
現在の年(例:2017)を開始年として将来の時間枠を含めて、来年が「©2017-2018、Company。」のように表示されるようにする場合は、次のコードを使用します。毎年自動的に更新されます:
© Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.
©Copyright 2017-2018、Company。
ただし、最初の1年が既に過ぎている場合、最短コードは次のように記述できます。
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
<script type="text/javascript">document.write(new Date().getFullYear());</script>
JSソリューションはうまく機能しますが、サーバー側のソリューションについてアドバイスします。私がチェックしたサイトの中には、ページ全体が空白になるという問題があり、たまに年が表示されるだけでした。
この理由は、ドキュメント全体にdocument.writeが実際に書き込まれたためです。
私は友人にサーバー側のソリューションを実装するように頼みましたが、それは彼にとってはうまくいきました。 PHPのシンプルなコード
<?php echo date('Y'); ?>
楽しい!
これは、ADとBCの両方で動作する、究極の最短の最も責任あるバージョンです。
[ドラムロール...]
<script>document.write(Date().split` `[3])</script>
それでおしまい。受け入れられた回答よりも6バイト短い。
ES5との互換性が必要な場合は、次のことで解決できます。
<script>document.write(Date().split(' ')[3])</script>
これは、純粋なJavaScriptで機能すると考えられる最良のソリューションです。また、CSSでターゲットにできるように要素をスタイルすることもできます。年の代わりに追加するだけで、自動的に更新されます。
//Wait for everything to load first
window.addEventListener('load', ()=>{
//Wrap code in IIFE
(function (){
//If your page has an element with ID of auto-year-update the element will be populated with the current year.
var date=new Date();
if(document.querySelector("#auto-year-update")!==null){
document.querySelector("#auto-year-update").innerText=date.getFullYear();
}
})();
});