Как мне использовать PHP, чтобы получить текущий год?

937

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

Дж. Д. Граффам
источник
631
echo date("Y");
Doub1ejack
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
Я лично утверждаю, что это стало веб-соглашением, так что, хотя вы технически правы, это не то, чего ожидают люди. Факт остается фактом: хотя наличие, т. Е. «Copyright 2007, все права защищены», размещенного в нижнем колонтитуле страницы, содержащей статью, написанную в 2007 году, является технически правильным, посетители сайта могут предположить, что сайт был заброшен. Даже большой корпорации с командами юристов по-прежнему ставят свои веб-страницы на печать с текущим годом, даже если это «2007-2015»
Натан Хорнби

Ответы:

1152

Вы можете использовать либо дату, либо strftime . В этом случае я бы сказал, что это не имеет значения, поскольку год - это год, несмотря ни на что (разве есть локаль, которая форматирует год по-другому?)

Например:

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

Напомним, что при форматировании дат в PHP имеет значение, когда вы хотите отформатировать дату в другой локали, чем по умолчанию. Если это так, вы должны использовать setlocale и strftime. Согласно руководству по PHP на дату:

Чтобы форматировать даты на других языках, вы должны использовать функции setlocale () и strftime () вместо date ().

С этой точки зрения, я думаю, что было бы лучше использовать как можно больше strftime, если у вас даже есть возможность удаленной локализации вашего приложения. Если это не проблема, выберите тот, который вам нравится больше всего.

Эрик ван Бракель
источник
4
@ErikvanBrakel просто не интересует текущий год в Таиланде - 2556. Не уверен, что языковой стандарт PHP учитывает это, но в идеальном мире это должно быть :)
Dirk Hartzer Waldeck
Вы можете просто сказать: дата ("Y");
Китайские и японские годы фтв! 年 年 / 二千 十六 年
Panzercrisis
3
Если бы я мог сделать это на Youtube. «Например, если вы смотрите это в <? Php echo date (« Y »);?>»
Лука
Почему я использовал 'y'? : /
Гуга Немсицверидзе
515
<?php echo date("Y"); ?>
Даниэль Папасян
источник
32
Кроме того,<?= date('Y') ?>
Шейн Рустл
33
короткие теги поддерживаются не всеми серверами, и есть также это: programmers.stackexchange.com/questions/151661/…
Дирк Хартцер Вальдек,
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.
gregmac
источник
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 . Это отличная функция для захвата / рекомбинации кусков даты / времени.

Кроме того, он учитывает настройки локали, которые не выполняет функция даты.

Марк Бик
источник
14

Это дает вам местное время:

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

И этот UTC :

$year = gmdate('Y'); // 2008
Алексей Лебедев
источник
12

Для 4-значного представления:

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

2-х значное представление:

<?php echo date('y'); ?>

Обратитесь к документации php для получения дополнительной информации: https://secure.php.net/manual/en/function.date.php

joan16v
источник
12

Вот что я делаю:

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

ниже немного объяснения того, что он делает:

d = day
m = month
Y = year

Y даст вам четыре цифры (например, 1990) и y для двух цифр (например, 90)

Абдул Рахман А Самад
источник
10

echo date('Y')дает вам текущий год, и он будет обновляться автоматически, так как date()дает нам текущую дату.

kkarayat
источник
8

использовать функцию PHP, которая просто вызывается date().

Она принимает текущую дату, а затем вы предоставляете ей формат

и формат просто будет Y. Капитал Y будет четырехзначным годом.

<?php echo date("Y"); ?>
Ваэль Ассаф
источник
8
<?php echo date("Y"); ?>

Этот код должен делать

Абделькадер Судани
источник
1
Старайтесь избегать коротких тегов формы, будь то <? или <? = потому что это не очень хорошая практика. Тем не менее, стоит отметить, что многие хорошие фреймворки, такие как Zend, не допускают краткую ссылку на открывающий тег PHP, поэтому, пожалуйста, ради меня, нажмите несколько клавиш, чтобы сохранить читабельность кода.
Ваэль Ассаф
7

Если ваш сервер поддерживает короткие теги или вы используете PHP 5.4, вы можете использовать:

<?=date("Y")?>
PanicGrip
источник
6
Пожалуйста, никогда, никогда, никогда не используйте шорт-теги снова. stackoverflow.com/questions/200640/…
Jelmer
php v5.4.0 - тег <? = всегда доступен независимо от настройки ini short_open_tag. Так что теперь вы можете использовать этот синтаксис.
нектобит
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

И «эхо» это значение ...

saadk
источник
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. Капитал Y будет четырехзначным годом.

<?php echo date("Y"); ?>
Sanu0786
источник
4

лучший шорткод для этого раздела:

<?= date("Y"); ?>
Омид Ахмадяни
источник
Я собирался написать то же самое: D
Lukas
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");?>

Вы можете использовать это в разделах нижнего колонтитула, чтобы получить динамический год авторского права

imtaher
источник
0

$ year = date ("Y", strtotime ($ yourDateVar));

Эрнан Эш
источник
-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;
?>
Gaurav
источник
1
Это не то, что они просят, ни объясненный ответ.
Эллиот А.