Як використовувати PHP, щоб отримати поточний рік?


936

Я хочу помістити сповіщення про авторські права в нижній частині веб-сайту, але я вважаю, що рік надзвичайно липкий, щоб застаріти. Як я можу зробити оновлення року автоматично за допомогою PHP 4 та PHP 5 ?


630
echo date("Y");
sum1ejack

2
Я отримав попередження, використовуючи це. Додано date_default_timezone_set ('UTC'); щоб уникнути отримання попередження. ("UTC + 1" не працює ... не можу сказати вам так само, як тільки починати з PHP). Можливо, є якийсь спосіб налаштувати PHP, щоб уникнути закидання попереджень (у деяких файлах конфігурації, таких як php.ini).
Джастін

4
@justin Це означає, що ви не встановили часовий пояс за замовчуванням, і PHP цього не любить. Ви можете або встановити часовий пояс за замовчуванням у php.iniфайлі з чимось подібним, date.timezone = "America/Los_Angeles"або ви можете встановити його на початку коду чимось на зразок date_default_timezone_set( "America/Los_Angeles" ).
Джошуа Пінтер

7
ПРИМІТКА. Рік у повідомленні про авторські права насправді не має великої юридичної цінності, але, як правило, додається, щоб допомогти людям, які хочуть дізнатися, чи зберігаються авторські права. Як такий передбачається рік опублікування твору. Просто використання поточного року справді не має сенсу ... Однак я бачив це незліченно разів.
Штійн де Вітт

7
Я особисто зауважую, що це стало веб-конвенцією, тому, хоча ви технічно правильні, люди не чекають цього. Факт залишається фактом, що хоча, маючи, наприклад, "Авторське право 2007, усі права захищені", викладене в нижній частині сторінки, що містить статтю, написану в 2007 році, технічно правильно, відвідувачі цього сайту, ймовірно, припускають, що сайт був покинутий. Навіть великий корпорації з командами юристів все ще залишають на своїх веб-сторінках поточний рік, навіть якщо це "2007-2015".
Натан Хорнбі,

Відповіді:


1151

Ви можете використовувати дату або строп . У цьому випадку я б сказав, що це не має значення, оскільки рік - це рік, незалежно від того (хіба є локаль, який форматизує рік інакше?)

Наприклад:

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

Зі сторони, під час форматування дат у PHP має значення, коли ви хочете відформатувати дату в іншій мові, ніж за замовчуванням. Якщо це так, вам доведеться використовувати setlocale та strroll. Відповідно до посібника з php на дату:

Для форматування дат іншими мовами слід використовувати функції setlocale () та strroll () замість date ().

З цієї точки зору, я вважаю, що було б найкраще максимально використати strroll, якщо у вас є навіть віддалена можливість локалізувати свою програму. Якщо це не проблема, виберіть той, який вам найбільше подобається.


4
@ErikvanBrakel щойно цікавить, що поточний рік у Таїланді становить 2556. Не впевнений, чи враховує це місце PHP, але в ідеальному світі це повинно бути :)
Dirk Hartzer Waldeck

Ви можете просто сказати: дата ("Y");

Китайські та японські роки ftw! 2016 年 / 二千 十六 年
Panzercrisis

3
Якби я міг це зробити на Youtube. "Начебто, якщо ви переглядаєте це в <? Php echo date (" Y ");?>"
Лука

Чому я використовував 'y'? : /
Guga Nemsitsveridze

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

32
Також,<?= date('Y') ?>
Shane Reustle

33
короткі теги підтримуються не на всіх серверах, є також і таке: programmers.stackexchange.com/questions/151661/…
Dirk Hartzer Waldeck

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

Я люблю стріллінг . Це відмінна функція для захоплення / рекомбінації фрагментів дат / часів.

Крім того, він враховує параметри місцевості, які функція дати не виконує.




12

Ось що я роблю:

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

нижче трохи пояснень, що це робить:

d = day
m = month
Y = year

Y дасть вам чотиризначний (наприклад, 1990) і y для двозначного (наприклад, 90)


10

echo date('Y')дає вам поточний рік, і це оновиться автоматично, оскільки date()дасть нам поточну дату.



8

використовувати функцію PHP, яку щойно називають date() .

Він займає поточну дату, а потім ви надаєте їй формат

а формат якраз буде Y. Capital Y буде чотиризначним роком.

<?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 - тег <? = завжди доступний незалежно від налаштування ini short_open_tag ini. Тепер ви можете використовувати цей синтаксис.
нектобіт

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

До речі ... є кілька належних способів відображення авторських прав на сайт. Деякі люди схильні робити щось зайвим, тобто: Copyright © має і те саме значення. Важливими частинами авторських прав є:

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

Або ви можете використовувати його одним рядком

$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. Capital Y буде чотиризначним роком.

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


3

Використовуйте повний рік:

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

Або використовуйте лише дві цифри року, використовувані так:

 <?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
Це не те, про що вони просять, ані поясненої відповіді.
Елліот А.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.