Wie verwende ich PHP, um das aktuelle Jahr zu erhalten?


937

Ich möchte einen Copyright-Hinweis in die Fußzeile einer Website einfügen, aber ich denke, es ist unglaublich schwierig, wenn das Jahr nicht mehr aktuell ist. Wie würde ich das Jahr automatisch mit PHP 4 und PHP 5 aktualisieren ?


630
echo date("Y");
Doub1ejack

2
Damit habe ich eine Warnung bekommen. Date_default_timezone_set ('UTC') hinzugefügt; um die Warnung zu vermeiden. ('UTC + 1' funktioniert nicht ... kann Ihnen nicht viel sagen, als nur mit PHP zu beginnen). Wahrscheinlich gibt es eine Möglichkeit, PHP zu konfigurieren, um zu vermeiden, dass die Warnungen ausgegeben werden (in einigen Konfigurationsdateien wie php.ini).
Justin

4
@justin Dies bedeutet, dass Sie die Standardzeitzone nicht festgelegt haben und PHP das nicht mag. Sie können entweder die Standardzeitzone in der php.iniDatei mit etwas wie date.timezone = "America/Los_Angeles"festlegen oder Sie können sie am Anfang Ihres Codes mit etwas wie festlegen date_default_timezone_set( "America/Los_Angeles" ).
Joshua Pinter

7
HINWEIS: Das Jahr in einem Urheberrechtshinweis hat nicht wirklich viel rechtlichen Wert, wird jedoch normalerweise hinzugefügt, um Personen zu helfen, die wissen möchten, ob das Urheberrecht noch gilt. Als solches soll es das Jahr sein, in dem die Arbeit veröffentlicht wurde. Nur das aktuelle Jahr zu benutzen macht wirklich keinen Sinn ... Allerdings habe ich es unzählige Male gesehen.
Stijn de Witt

7
Ich persönlich würde argumentieren, dass es sich um eine Webkonvention handelt. Obwohl Sie technisch korrekt sind, ist dies nicht das, was die Leute erwarten. Es bleibt die Tatsache, dass, obwohl "Copyright 2007, alle Rechte vorbehalten" in der Fußzeile einer Seite mit einem Artikel aus dem Jahr 2007 technisch korrekt ist, Besucher der Website wahrscheinlich davon ausgehen, dass die Website aufgegeben wurde. Auch groß Unternehmen mit Anwaltsteams stempeln ihre Webseiten immer noch mit dem aktuellen Jahr, auch wenn es "2007-2015" ist.
Nathan Hornby

Antworten:


1152

Sie können entweder Datum oder Uhrzeit verwenden . In diesem Fall würde ich sagen, dass es keine Rolle spielt, da ein Jahr ein Jahr ist, egal was passiert (es sei denn, es gibt ein Gebietsschema, das das Jahr anders formatiert?).

Zum Beispiel:

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

Nebenbei bemerkt ist es beim Formatieren von Daten in PHP wichtig, wann Sie Ihr Datum in einem anderen Gebietsschema als Ihrem Standardformat formatieren möchten. In diesem Fall müssen Sie setlocale und strftime verwenden. Laut PHP-Handbuch am Datum:

Um Datumsangaben in anderen Sprachen zu formatieren, sollten Sie anstelle von date () die Funktionen setlocale () und strftime () verwenden.

Unter diesem Gesichtspunkt denke ich, dass es am besten ist, strftime so oft wie möglich zu verwenden, wenn Sie sogar eine entfernte Möglichkeit haben, Ihre Anwendung lokalisieren zu müssen. Wenn dies kein Problem ist, wählen Sie das aus, das Ihnen am besten gefällt.


4
@ErikvanBrakel gerade aus Interesse das aktuelle Jahr in Thailand ist 2556. Ich bin mir nicht sicher, ob das PHP-Gebietsschema dies berücksichtigt, aber in einer perfekten Welt sollte es :)
Dirk Hartzer Waldeck

Man könnte einfach sagen: Datum ("Y");

Chinesische und japanische Jahre ftw! 2016 年 / 二千 十六 年
Panzercrisis

3
Wenn ich das auf Youtube machen könnte. "Als ob Sie dies in <? Php echo date (" Y ") sehen;?>"
Luka

Warum habe ich verwendet 'y'? : /
Guga Nemsitsveridze

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

32
Auch<?= date('Y') ?>
Shane Reustle

33
kurze Tags werden nicht von allen Servern unterstützt und es gibt auch Folgendes: programmers.stackexchange.com/questions/151661/…
Dirk Hartzer Waldeck

5
In PHP 5.4 können Sie kurze Echo-Tags wie die oben genannten frei verwenden. Sie sind viel schöner in Ansichten imho.
Jimbo

1
@ ShaneReustle, du hast die Semikolons am Ende verpasst;) Ich weiß, dass sie in diesem Fall nicht wichtig sind, aber es ist eine gute Übung für Anfänger :)
Dimitar

204

Meine super faule Version des Zeigens einer Copyright-Zeile, die automatisch aktualisiert bleibt:

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

In diesem Jahr (2008) heißt es:

© 2008 Me, Inc.

Nächstes Jahr heißt es:

© 2008-2009 Me, Inc.

und für immer mit dem aktuellen Jahr auf dem Laufenden bleiben.


Oder (PHP 5.3.0+) eine kompakte Methode, um dies mit einer anonymen Funktion zu tun, damit keine Variablen auslaufen und Code / Konstanten nicht wiederholt werden:

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

15
Kürzere (aber weniger lesbare) Version:&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
Hitautodestruct

Meine einzeilige Version:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000

71

Da PHP in eine objektorientiertere Richtung geht, bin ich überrascht, dass hier niemand auf die integrierte DateTimeKlasse verwiesen hat :

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

oder einzeilig mit Zugriff auf Klassenmitglieder bei Instanziierung (php> = 5.4):

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


28
strftime("%Y");

Ich liebe Strftime . Es ist eine großartige Funktion zum Abrufen / Rekombinieren von Daten- / Uhrzeitblöcken.

Außerdem werden die Gebietsschemaeinstellungen berücksichtigt, die die Datumsfunktion nicht bietet.


14

Dieser gibt Ihnen die Ortszeit:

$year = date('Y'); // 2008

Und diese UTC :

$year = gmdate('Y'); // 2008


12

Folgendes mache ich:

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

Im Folgenden finden Sie eine Erklärung, was es tut:

d = day
m = month
Y = year

Y gibt Ihnen vier Ziffern (zB 1990) und Y zwei Ziffern (zB 90)


10

echo date('Y')gibt Ihnen das aktuelle Jahr an, und dieses wird automatisch aktualisiert, da Sie date()uns das aktuelle Datum mitteilen.



8

Verwenden Sie eine PHP-Funktion, die gerade aufgerufen wird date() .

Es nimmt das aktuelle Datum an und Sie geben ihm ein Format

und das Format wird nur Y sein. Capital Y wird ein vierstelliges Jahr sein.

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

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

Dieser Code sollte reichen


1
Vermeiden Sie Kurzform-Tags, egal ob <? oder <? = weil es keine gute Praxis ist. Es lohnt sich aber , dass viele gute Frameworks wie Zend Erwähnens nicht zulassen Stenografie PHP Starttag Link Also bitte meinetwegen ein paar Tastenanschläge durchführen , um Ihre Lesbarkeit des Codes zu speichern.
Wael Assaf

7

Wenn Ihr Server Short Tags unterstützt oder Sie PHP 5.4 verwenden, können Sie Folgendes verwenden:

<?=date("Y")?>

6
Bitte verwenden Sie niemals wieder Short-Tags. stackoverflow.com/questions/200640/…
Jelmer

php v5.4.0 - das tag <? = ist immer verfügbar, unabhängig von der Einstellung short_open_tag ini. Jetzt können Sie diese Syntax verwenden.
Nektobit

7

Einfach schreiben:

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

Oder:

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

Und 'echo' diesen Wert ...


5

Sie können die einfache PHP-Datumsklasse verwenden. Es bietet viele nützliche Methoden und Funktionen:

$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();
...

Weitere Beispiele finden Sie auf der Seite mit den Bibliotheks-Tutorials


5

Übrigens ... es gibt einige geeignete Möglichkeiten, um das Urheberrecht der Website anzuzeigen. Einige Leute neigen dazu, Dinge überflüssig zu machen, dh: Copyright © haben beide die gleiche Bedeutung. Die wichtigen urheberrechtlich geschützten Teile sind:

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

Verwenden von PHP + HTML:

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

oder

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

5

Für bis zu PHP 5.4+

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

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

Oder Sie können es mit einer Zeile verwenden

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

Wenn Sie das Jahr erhöhen oder verringern möchten, verwenden Sie eine andere Methode. füge eine Änderungszeile wie unten hinzu.

<?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

Verwenden Sie eine PHP- date()Funktion.

und das Format wird nur Y sein. Capital Y wird ein vierstelliges Jahr sein.

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


3

Holen Sie sich das ganze Jahr verwendet:

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

Oder lassen Sie nur zwei Ziffern des Jahres so verwenden:

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

3

Mein Weg, um das Urheberrecht zu zeigen, das wird automatisch aktualisiert

<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>    

Die Ergebnisse werden als ausgegeben

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");?>

Sie können dies in Fußzeilenabschnitten verwenden, um ein dynamisches Copyright-Jahr zu erhalten



-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
Dies ist weder das, wonach sie fragen, noch eine erklärte Antwort.
Elliot A.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.