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 ?


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.


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

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.

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


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.




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)


10

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



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

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

Ten kod powinien wystarczyć


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

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


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


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

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

5

użyj date()funkcji PHP .

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

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


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

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.

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

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



-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
Nie o to proszą ani wyjaśnienia.
Elliot A.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.