PHPを使用して現在の年を取得するにはどうすればよいですか?


937

ウェブサイトのフッターに著作権表示を入れたいのですが、年が古くなるのは信じられないほど難しいと思います。PHP 4およびPHP 5で年の更新を自動的に行うにはどうすればよいですか?


630
echo date("Y");
doub1ejack

2
それを使って警告を受けました。date_default_timezone_set( 'UTC');を追加しました。警告を受けないようにするため。( 'UTC + 1'は機能しません... PHPから始めただけでは、何もわかりません)。(php.iniのような設定ファイルで)警告をスローしないようにPHPを設定する方法がおそらくあるでしょう。
ジャスティン2014年

4
@justinこれは、デフォルトのタイムゾーンが設定されておらず、PHPがそれを好まないことを意味します。php.iniファイルにデフォルトのタイムゾーンを設定するかdate.timezone = "America/Los_Angeles"、コードの最初にのように設定することができますdate_default_timezone_set( "America/Los_Angeles" )
Joshua Pinter、2014

7
注:著作権表示の年は実際にはそれほど法的な価値はありませんが、通常、著作権がまだ適用されるかどうかを知りたい人を支援するために追加されます。そのようにそれは作品が出版された年であるはずです。現在の年を使用するだけでは、まったく意味がありません...しかし、私はそれが無数に行われたのを見てきました。
Stijn de Witt 2014

7
私はそれがウェブの慣習になったと個人的に主張するので、あなたは技術的に正しいですが、それは人々が期待するものではありません。2007年に書かれた記事を含むページのフッターに「Copyright 2007、all rights reserved」と記載されていることは技術的に正しいが、サイトへの訪問者はサイトが放棄されたと想定する可能性が高いという事実は変わりません。弁護士のチームを持つ企業は、たとえ '2007-2015'であっても、現在の年をウェブページにスタンプします
Nathan Hornby

回答:


1152

dateまたはstrftimeを使用できます。この場合、何であれ、年は年なので、それは問題ではないと思います(年を別の形式で設定するロケールがない限り)。

例えば:

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

ちなみに、PHPで日付をフォーマットするとき、デフォルトとは異なるロケールで日付をフォーマットする場合が重要です。その場合は、setlocaleとstrftimeを使用する必要があります。日付のphpマニュアルによると:

他の言語で日付をフォーマットするには、date()の代わりにsetlocale()およびstrftime()関数を使用する必要があります。

この観点から、アプリケーションをローカライズする必要がある可能性が少しでもある場合は、できるだけstrftimeを使用するのが最善だと思います。それが問題でない場合は、一番好きなものを選んでください。


4
@ErikvanBrakelはタイでの現在の年が2556年です。PHPロケールでこれを考慮に入れるかどうかはわかりませんが、完璧な世界では次のようにする必要があります:)
Dirk Hartzer Waldeck

あなたは単に次のように言うことができます:date( "Y");

中国と日本の年ftw!2016年/二千十六年
Panzercrisis

3
Youtubeでこれができたら。「<?php echo date( "Y");?>でこれを見ている場合と同様に」
Luka

なぜ使用したの'y'ですか?:/
Guga Nemsitsveridze

515
<?php echo date("Y"); ?>

32
また、<?= date('Y') ?>
Shane Reustle 2013年

33
短いタグは、すべてのサーバーでサポートされている、これもありますされていません。programmers.stackexchange.com/questions/151661/...
ディルクHartzerヴァルデック

5
PHP 5.4では、上記のような短いエコータグを自由に使用できます。彼らは私見でビューではるかに優れています。
神保

1
@ShaneReustle、最後にセミコロンを逃しました;)この場合、セミコロンは重要ではないことはわかっていますが、初心者にはお勧めです:)
Dimitar

204

自動的に更新されたままになる、著作権の線を表示する私の超怠惰なバージョン:

&copy; <?php 
$copyYear = 2008; 
$curYear = date('Y'); 
echo $copyYear . (($copyYear != $curYear) ? '-' . $curYear : '');
?> Me, Inc.

今年(2008年)、それは言うでしょう:

©2008 Me、Inc.

来年、それは言うでしょう:

©2008-2009 Me、Inc.

そして永遠に現在の年で更新されたままです。


または(PHP 5.3.0+)匿名関数を使用してそれを行うコンパクトな方法で、リークする変数がなく、コード/定数を繰り返さないようにします。

&copy; 
<?php call_user_func(function($y){$c=date('Y');echo $y.(($y!=$c)?'-'.$c:'');}, 2008); ?> 
Me, Inc.

15
より短い(ただし、読みにくい)バージョン:&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodestruct

私の一行バージョン:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000

71

PHPがよりオブジェクト指向の方向に向かっているため、組み込みDateTimeクラスを参照している人がいないことに驚いています。

$now = new DateTime();
$year = $now->format("Y");

またはインスタンス化時にクラスメンバーアクセスを持つワンライナー(php> = 5.4):

$year = (new DateTime)->format("Y");


28
strftime("%Y");

strftimeが大好きです。日付/時刻のチャンクを取得/再結合するための優れた機能です。

さらに、日付関数が行わないロケール設定を尊重します。




12

これが私がすることです:

<?php echo date("d-m-Y") ?>

以下はそれが何をするかについての少しの説明です:

d = day
m = month
Y = year

Yは4桁(例:1990)を示し、yは2桁(例:90)を示します。


10

echo date('Y')現在の年を提供しdate()、現在の日付を提供するため、これは自動的に更新されます。



8

単に呼び出されるPHP関数を使用しますdate()

それは現在の日付を取り、あなたはそれにフォーマットを提供します

形式はYになります。大文字のYは4桁の年になります。

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

8
<?php echo date("Y"); ?>

このコードはすべきです


1
<かどうかにかかわらず、短い形式のタグは避けてください。または<?=これは良い習慣ではないためです。ただし、Zendのような多くの優れたフレームワークでは、PHPの開始タグの短縮形のリンクが許可されていないため、コードを読みやすくするためにいくつかのキーストロークを実行してください。
Wael Assaf

7

サーバーがショートタグをサポートしている場合、またはPHP 5.4を使用している場合は、以下を使用できます。

<?=date("Y")?>

6
もう二度と短いタグを使用しないでください。stackoverflow.com/questions/200640/...
Jelmer

php v5.4.0-タグ<?=は、short_open_tag ini設定に関係なく常に使用可能です。このため、この構文を使用できます。
nektobit

7

書くだけ:

date("Y") // A full numeric representation of a year, 4 digits
          // Examples: 1999 or 2003

または:

date("y"); // A two digit representation of a year     Examples: 99 or 03

そして、この値を「エコー」します...


5

単純なPHP日付クラスを使用できます。それは多くの便利なメソッドと機能を提供します:

$date = new simpleDate();
echo $date->now()->getYear(); 
echo $date->now()->getMonth();
echo $date->set('2013-01-21')->getDayString();
echo $date->now()->compare('2013-01-21')->isBefore();
...

ライブラリチュートリアルページでその他の例を確認できます


5

ところで...サイトの著作権を表示する適切な方法がいくつかあります。一部の人々は物事を冗長にする傾向があります:すなわち、著作権©は両方とも同じ意味を持っています。重要な著作権部分は次のとおりです。

**Symbol, Year, Author/Owner and Rights statement.** 

PHP + HTMLを使用:

<p id='copyright'>&copy; <?php echo date("Y"); ?> Company Name All Rights Reserved</p>

または

<p id='copyright'>&copy; <?php echo "2010-".date("Y"); ?> Company Name All Rights Reserved</p

5

PHP 5.4以降まで

<?php
    $current= new \DateTime();
    $future = new \DateTime('+ 1 years');

    echo $current->format('Y'); 
    //For 4 digit ('Y') for 2 digit ('y')
?>

または、1行で使用できます

$year = (new DateTime)->format("Y");

別の方法で年を増減したい場合は、以下のような修正行を追加します。

<?PHP 
  $now   = new DateTime;
  $now->modify('-1 years'); //or +1 or +5 years 
  echo $now->format('Y');
  //and here again For 4 digit ('Y') for 2 digit ('y')
?>

5

PHP date()関数を使用します。

形式はYになります。大文字のYは4桁の年になります。

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

4

このセクションに最適なショートコード:

<?= date("Y"); ?>

同じことを書くつもりだった:D
Lukas

3

通年使用:

 <?php 
    echo $curr_year = date('Y'); // it will display full year ex. 2017
?>

または、次のように使用される年の2桁のみを取得します。

 <?php 
    echo $curr_year = date('y'); // it will display short 2 digit year ex. 17
?>

3

著作権を表示する私の方法、それは自動的に更新し続けます

<p class="text-muted credit">Copyright &copy;
    <?php
        $copyYear = 2017; // Set your website start date
        $curYear = date('Y'); // Keeps the second year updated
        echo $copyYear . (($copyYear != $curYear) ? '-' . $curYear : '');
    ?> 
</p>    

結果は次のように出力されます

copyright @ 2017   //if $copyYear is 2017 
copyright @ 2017-201x    //if $copyYear is not equal to Current Year.

2
<?php date_default_timezone_set("Asia/Kolkata");?><?=date("Y");?>

これをフッターセクションで使用して、動的な著作権年を取得できます



-1
<?php
$time_now=mktime(date('h')+5,date('i')+30,date('s'));
$dateTime = date('d_m_Y   h:i:s A',$time_now);

echo $dateTime;
?>

1
これは彼らが求めていることでも説明された答えでもありません。
Elliot A.16年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.