web-dev-qa-db-ja.com

Webサイトで現在の年を印刷する最短の方法

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

現在、私は使用しています:

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

これは短くなりますか?

186
tpow

これは私がそれを得ることができる最短です:

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

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

私がそこに着いた方法:

  • 新しく作成したgetFullYearDateを直接呼び出すだけで、変数は不要です。 new Date().getFullYear()は少し奇妙に見えるかもしれませんが、信頼できます:new Date()の部分が最初に行われ、次に.getFullYear()が行われます。
  • JavaScriptがデフォルトであるため、typeをドロップできます。これは HTML5仕様 の一部としても文書化されており、この場合、ブラウザが既に実行していることを記述している可能性があります。
  • JavaScriptには「自動セミコロン挿入」という機能があり、通常はdespiseおよびrail railであるため、余分に保存された1つの文字の最後にセミコロンをドロップできます。しかし、この特定の使用例では、十分に安全である必要があります。

JavaScriptが有効になっているブラウザでのみ機能することに注意してください。理想的には、これは年に一度、オフラインバッチジョブ(* _nixなどのsedスクリプト)としてより適切に処理されますが、JavaScriptソリューションが必要な場合は、それはできるだけ短いと思います。 (今、私は行って、運命を誘惑しました。)

471
T.J. Crowder

TJの答えは優れていますが、HTMLが既にレンダリングされており、document.writeスクリプトが日付だけですべてのページコンテンツを上書きするというシナリオに遭遇しました。

このシナリオでは、次のコードを使用して、既存の要素にテキストノードを追加できます。

<div>
    &copy;
    <span id="copyright">
        <script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
    </span>
    Company Name
</div>
25
Adam Milecki

現在の年(例:2017)を開始年として将来の時間枠を含めて、来年が「©2017-2018、Company。」のように表示されるようにする場合は、次のコードを使用します。毎年自動的に更新されます:

&copy; Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.

©Copyright 2017-2018、Company。

ただし、最初の1年が既に過ぎている場合、最短コードは次のように記述できます。

&copy; Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
11
Martin Adams
<script type="text/javascript">document.write(new Date().getFullYear());</script>
11
Thomas Kremmel

JSソリューションはうまく機能しますが、サーバー側のソリューションについてアドバイスします。私がチェックしたサイトの中には、ページ全体が空白になるという問題があり、たまに年が表示されるだけでした。

この理由は、ドキュメント全体にdocument.writeが実際に書き込まれたためです。

私は友人にサーバー側のソリューションを実装するように頼みましたが、それは彼にとってはうまくいきました。 PHPのシンプルなコード

<?php echo date('Y'); ?>

楽しい!

8
Arcanyx

これは、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();
}
})();
});
1
Chris