Jak korzystać z PHP, aby uzyskać bieżący rok?

936

Chcę umieścić informację o prawach autorskich w stopce strony internetowej, ale uważam, że jest bardzo tandetna, aby rok był nieaktualny. Jak sprawić, by rok aktualizował się automatycznie w PHP 4 i PHP 5 ?

JD Graffam
źródło
630
echo date("Y");
doub1ejack
2
Za pomocą tego dostałem ostrzeżenie. Dodano date_default_timezone_set ('UTC'); aby uniknąć ostrzeżenia. („UTC + 1” nie działa ... nie mogę powiedzieć ci nic więcej, jak rozpoczęcie od PHP). Prawdopodobnie istnieje sposób na skonfigurowanie PHP, aby uniknąć rzucania ostrzeżeń (w jakimś pliku konfiguracyjnym, takim jak php.ini).
justin
4
@ justin Oznacza to, że nie ustawiłeś domyślnej strefy czasowej i PHP tego nie lubi. Możesz ustawić domyślną strefę czasową w php.inipliku za pomocą czegoś podobnego date.timezone = "America/Los_Angeles"lub możesz ustawić ją na początku kodu za pomocą czegoś podobnego date_default_timezone_set( "America/Los_Angeles" ).
Joshua Pinter
7
UWAGA: Rok w informacji o prawach autorskich nie ma tak naprawdę dużej wartości prawnej, ale zwykle jest dodawany, aby pomóc osobom, które chcą wiedzieć, czy prawa autorskie nadal obowiązują. Jako taki powinien to być rok, w którym praca została opublikowana. Korzystanie z bieżącego roku naprawdę nie ma sensu ... Widziałem to jednak niezliczoną ilość razy.
Stijn de Witt
7
Osobiście twierdzę, że stała się konwencją internetową, więc chociaż technicznie masz rację, ludzie nie oczekują tego. Faktem jest, że chociaż napis „Copyright 2007, wszelkie prawa zastrzeżone” umieszczone w stopce strony zawierającej artykuł napisany w 2007 r. Jest technicznie poprawny, osoby odwiedzające stronę prawdopodobnie przypuszczą, że strona została opuszczona. Nawet duże korporacje z zespołami prawników wciąż stemplują swoje strony internetowe bieżącym rokiem, nawet jeśli jest to „2007-2015”
Nathan Hornby,

Odpowiedzi:

1151

Możesz użyć daty lub strftime . W tym przypadku powiedziałbym, że to nie ma znaczenia, ponieważ rok jest rokiem, bez względu na wszystko (chyba że istnieją ustawienia regionalne, które formatują rok inaczej?)

Na przykład:

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

Na marginesie, przy formatowaniu dat w PHP ma to znaczenie, gdy chcesz sformatować datę w innym języku niż domyślny. Jeśli tak, musisz użyć setlocale i strftime. Według podręcznika php w dniu:

Aby sformatować daty w innych językach, należy użyć funkcji setlocale () i strftime () zamiast date ().

Z tego punktu widzenia uważam, że najlepiej byłoby używać strftime w jak największym stopniu, jeśli masz nawet zdalną możliwość zlokalizowania aplikacji. Jeśli to nie problem, wybierz ten, który najbardziej Ci się podoba.

Erik van Brakel
źródło
4
@ErikvanBrakel po prostu nie interesuje bieżący rok w Tajlandii to 2556. Nie jestem pewien, czy ustawienia regionalne PHP biorą to pod uwagę, ale w idealnym świecie powinno :)
Dirk Hartzer Waldeck
Możesz po prostu powiedzieć: data („Y”);
Chińskie i japońskie lata ftw! 2016 年 / 二千 十六 年
Panzercrisis
3
Gdybym mógł to zrobić na Youtube. „Na przykład, jeśli oglądasz to w <? Php echo date („ Y ”);?>”
Luka
Dlaczego użyłem 'y'? : /
Guga Nemsitsveridze
515
<?php echo date("Y"); ?>
Daniel Papasian
źródło
32
Ponadto,<?= date('Y') ?>
Shane Reustle
33
krótkie tagi nie są obsługiwane przez wszystkie serwery, jest też coś takiego: programmers.stackexchange.com/questions/151661/…
Dirk Hartzer Waldeck
5
W PHP 5.4 możesz swobodnie używać krótkich znaczników echa jak wyżej. Są o wiele ładniejsze w widokach, imho.
Jimbo,
1
@ShaneReustle, na końcu przegapiłeś średnik;) Wiem, że nie są one ważne w tym przypadku, ale jest to dobra praktyka dla początkujących :)
Dimitar
204

Moja bardzo leniwa wersja pokazująca linię praw autorskich, która jest automatycznie aktualizowana:

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

W tym roku (2008) powie:

© 2008 Me, Inc.

W przyszłym roku powie:

© 2008-2009 Me, Inc.

i zawsze bądź na bieżąco z bieżącym rokiem.


Lub (PHP 5.3.0+) kompaktowy sposób na wykonanie tego za pomocą funkcji anonimowej, dzięki czemu nie ma wycieków zmiennych i nie powtarzasz kodu / stałych:

&copy; 
<?php call_user_func(function($y){$c=date('Y');echo $y.(($y!=$c)?'-'.$c:'');}, 2008); ?> 
Me, Inc.
gregmac
źródło
15
Krótsza (ale mniej czytelna) wersja:&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodestruct
Moja wersja jednoliniowa:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000,
71

Ponieważ PHP zmierza w kierunku bardziej obiektowym, jestem zaskoczony, że nikt tutaj nie odwoływał się do wbudowanej DateTimeklasy:

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

lub jednowierszowy z dostępem do klasy podczas tworzenia instancji (php> = 5,4):

$year = (new DateTime)->format("Y");
Thomas Kelley
źródło
28
strftime("%Y");

Uwielbiam strftime . Jest to świetna funkcja do przechwytywania / ponownego łączenia fragmentów dat / godzin.

Ponadto przestrzega ustawień regionalnych, których funkcja daty nie robi.

Mark Biek
źródło
14

Ten podaje czas lokalny:

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

A ten jeden UTC :

$year = gmdate('Y'); // 2008
Aleksiej Lebiediew
źródło
12

Oto co robię:

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

poniżej znajduje się wyjaśnienie tego, co robi:

d = day
m = month
Y = year

Y da ci cztery cyfry (np. 1990), a y dwie cyfry (np. 90)

Abdul Rahman A Samad
źródło
10

echo date('Y')daje bieżący rok, a to aktualizuje się automatycznie, ponieważ date()podaje nam bieżącą datę.

kkarayat
źródło
8

użyj funkcji PHP, która właśnie została wywołana date().

Bierze aktualną datę, a następnie podajesz jej format

a format będzie po prostu Y. Kapitał Y będzie czterocyfrowy rok.

<?php echo date("Y"); ?>
Wael Assaf
źródło
8
<?php echo date("Y"); ?>

Ten kod powinien wystarczyć

Abdelkader Soudani
źródło
1
Staraj się unikać tagów krótkich, czy to <? lub <? = ponieważ nie jest to dobra praktyka. Warto jednak wspomnieć, że wiele dobrych frameworków, takich jak Zend, nie pozwala na stenograficzne otwieranie linków do tagów otwierających PHP. Więc proszę, dla mojego dobra, wykonaj kilka naciśnięć klawiszy, aby zachować czytelność kodu.
Wael Assaf,
7

Jeśli twój serwer obsługuje krótkie tagi lub używasz PHP 5.4, możesz użyć:

<?=date("Y")?>
PanicGrip
źródło
6
Proszę, nigdy, nigdy, nigdy więcej, nie używaj ponownie krótkich tagów. stackoverflow.com/questions/200640/…
Jelmer,
php v5.4.0 - tag <? = jest zawsze dostępny niezależnie od ustawienia ini short_open_tag, więc teraz możesz użyć tej składni.
nektobit
7

Tylko napisz:

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

Lub:

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

I „echo” tej wartości ...

saadk
źródło
5

Możesz użyć prostej klasy daty PHP. Zapewnia wiele przydatnych metod i funkcji:

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

Możesz sprawdzić stronę samouczków biblioteki, aby uzyskać więcej przykładów

jest
źródło
5

BTW ... istnieje kilka prawidłowych sposobów wyświetlania praw autorskich do witryny. Niektóre osoby mają skłonność do nadmiaru rzeczy, np .: Prawa autorskie © mają to samo znaczenie. Ważnymi częściami dotyczącymi praw autorskich są:

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

Za pomocą PHP + HTML:

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

lub

<p id='copyright'>&copy; <?php echo "2010-".date("Y"); ?> Company Name All Rights Reserved</p
Mediolan
źródło
5

Dla wersji php 5.4+

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

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

Lub możesz użyć go z jedną linią

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

Jeśli chcesz zwiększyć lub zmniejszyć rok inną metodę; dodaj zmodyfikuj linię jak poniżej.

<?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')
?>
Ivan Barayev
źródło
5

użyj date()funkcji PHP .

a format będzie po prostu Y. Kapitał Y będzie czterocyfrowy rok.

<?php echo date("Y"); ?>
Sanu0786
źródło
4

najlepszy shortcode dla tej sekcji:

<?= date("Y"); ?>
Omid Ahmadyani
źródło
Miałem napisać to samo: D
Lukas
3

Wykorzystaj pełny rok:

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

Lub użyj tylko dwóch cyfr roku:

 <?php 
    echo $curr_year = date('y'); // it will display short 2 digit year ex. 17
?>
Ganesh Udmale
źródło
3

Mój sposób na pokazanie praw autorskich, który aktualizuje się automatycznie

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

Spowoduje to wyświetlenie wyników jako

copyright @ 2017   //if $copyYear is 2017 
copyright @ 2017-201x    //if $copyYear is not equal to Current Year.
Sushank Pokharel
źródło
2
<?php date_default_timezone_set("Asia/Kolkata");?><?=date("Y");?>

Możesz użyć tego w sekcjach stopki, aby uzyskać dynamiczny rok praw autorskich

imtaher
źródło
0

$ rok = data („Y”, strtotime ($ twojaDataWar));

Hernán Eche
źródło
-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;
?>
Gauraw
źródło
1
Nie o to proszą ani wyjaśnienia.
Elliot A.