Como uso o PHP para obter o ano atual?

937

Quero colocar um aviso de direitos autorais no rodapé de um site, mas acho que é incrivelmente brega para o ano estar desatualizado. Como eu faria o ano atualizar automaticamente com o PHP 4 e o PHP 5 ?

JD Graffam
fonte
630
echo date("Y");
doub1ejack
2
Eu recebi um aviso usando isso. Adicionado date_default_timezone_set ('UTC'); para evitar receber o aviso. ('UTC + 1' não funciona ... não posso dizer muito, apenas começando com PHP). Provavelmente, há alguma maneira de configurar o PHP para evitar lançar os avisos (em algum arquivo de configuração como o php.ini).
Justin
4
@justin Isso significa que você não definiu o fuso horário padrão e o PHP não gosta disso. Você pode definir o fuso horário padrão no php.iniarquivo com algo parecido date.timezone = "America/Los_Angeles"ou definir no início do seu código com algo parecido date_default_timezone_set( "America/Los_Angeles" ).
Joshua Pinter
7
NOTA: O ano em um aviso de direitos autorais não tem muito valor legal, mas geralmente é adicionado para ajudar as pessoas que desejam saber se os direitos autorais ainda se aplicam. Como tal, é suposto ser o ano em que o trabalho foi publicado. Apenas usar o ano atual realmente não faz nenhum sentido ... No entanto, eu já vi isso feito inúmeras vezes.
Stijn de Witt
7
Eu pessoalmente argumentaria que se tornou uma convenção na web, portanto, embora você esteja tecnicamente correto, não é o que as pessoas esperam. O fato é que, apesar de ter, por exemplo, "Copyright 2007, todos os direitos reservados 'estampados no rodapé de uma página que contém um artigo escrito em 2007, estar tecnicamente correto, é provável que os visitantes do site suponham que o site foi abandonado. Mesmo grandes empresas com equipes de advogados ainda carimbar suas páginas web com o ano em curso, mesmo que seja '2007-2015'.
Nathan Hornby

Respostas:

1152

Você pode usar data ou horário . Nesse caso, eu diria que não importa, pois um ano é um ano, não importa o quê (a menos que haja um código de idioma que formate o ano de maneira diferente?)

Por exemplo:

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

Em uma nota lateral, ao formatar datas no PHP, é importante quando você deseja formatar sua data em um código de idioma diferente do padrão. Nesse caso, você deve usar setlocale e strftime. De acordo com o manual php na data:

Para formatar datas em outros idiomas, você deve usar as funções setlocale () e strftime () em vez de date ().

Desse ponto de vista, acho que seria melhor usar o strftime o máximo possível, se você ainda tiver a possibilidade remota de localizar seu aplicativo. Se isso não for um problema, escolha o que você mais gosta.

Erik van Brakel
fonte
4
@ErikvanBrakel apenas fora do interesse do ano em curso na Tailândia é 2556. Não tenho certeza se o PHP local leva isso em conta, mas em um mundo perfeito deve :)
Dirk Hartzer Waldeck
Você poderia simplesmente dizer: date ("Y");
Anos chineses e japoneses ftw! 2016年/二千十六年
Panzercrisis
3
Se eu pudesse fazer isso no Youtube. "Como se você estivesse assistindo isso em <? Php echo date (" Y ");?>"
Luka
Por que eu usei 'y'? : /
Guga Nemsitsveridze 14/03/19
515
<?php echo date("Y"); ?>
Daniel Papasian
fonte
32
Além disso,<?= date('Y') ?>
Shane Reustle
33
tags curtas não são suportados por todos os servidores e há também o seguinte: programmers.stackexchange.com/questions/151661/...
Dirk Hartzer Waldeck
5
No PHP 5.4, você pode usar livremente tags de eco curtas, como acima. Eles são muito melhores em visualizações.
Jimbo
1
@ShaneReustle, você perdeu o ponto e vírgula no final;) Eu sei que eles não são importantes neste caso, mas é uma boa prática para iniciantes :)
Dimitar
204

Minha versão super preguiçosa de mostrar uma linha de direitos autorais, que permanece automaticamente atualizada:

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

Este ano (2008), dirá:

© 2008 Me, Inc.

No próximo ano, ele dirá:

© 2008-2009 Me, Inc.

e fique sempre atualizado com o ano atual.


Ou (PHP 5.3.0+), uma maneira compacta de fazer isso usando uma função anônima para que você não tenha variáveis ​​vazando e não repita código / constantes:

&copy; 
<?php call_user_func(function($y){$c=date('Y');echo $y.(($y!=$c)?'-'.$c:'');}, 2008); ?> 
Me, Inc.
gregmac
fonte
15
Versão mais curta (mas menos legível):&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodestruct
Minha versão de uma linha:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000
71

Com o PHP indo em uma direção mais orientada a objetos, estou surpreso que ninguém aqui tenha feito referência à DateTimeclasse interna:

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

ou one-liner com acesso de membro da classe em instanciação (php> = 5.4):

$year = (new DateTime)->format("Y");
Thomas Kelley
fonte
28
strftime("%Y");

Eu amo strftime . É uma ótima função para pegar / recombinar pedaços de datas / horas.

Além disso, ele respeita as configurações de localidade que a função data não faz.

Mark Biek
fonte
14

Este fornece a hora local:

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

E este UTC :

$year = gmdate('Y'); // 2008
Alexey Lebedev
fonte
12

Para uma representação de 4 dígitos:

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

Representação de 2 dígitos:

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

Verifique a documentação do php para obter mais informações: https://secure.php.net/manual/en/function.date.php

joan16v
fonte
12

Aqui está o que eu faço:

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

abaixo está uma explicação do que ele faz:

d = day
m = month
Y = year

Y fornecerá quatro dígitos (por exemplo, 1990) e y para dois dígitos (por exemplo, 90)

Abdul Rahman A Samad
fonte
10

echo date('Y')fornece o ano atual e isso será atualizado automaticamente, pois date()fornece a data atual.

kkarayat
fonte
8

use uma função PHP que é chamada apenas date().

Leva a data atual e você fornece um formato para ela

e o formato será Y. O capital Y será um ano de quatro dígitos.

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

Este código deve fazer

Abdelkader Soudani
fonte
1
Tente evitar tags curtas, seja <? ou <? = porque não é uma boa prática. Vale ressaltar, no entanto, que muitas boas estruturas como o Zend não permitem o link abreviado de tags de abertura do PHP. Então, por minha causa, pressione algumas teclas para salvar a legibilidade do código.
11307 Wael Assaf
7

Se o seu servidor suportar Tags Curtas, ou você usar o PHP 5.4, poderá usar:

<?=date("Y")?>
PanicGrip
fonte
6
Por favor, nunca, nunca, nunca use atalhos novamente. stackoverflow.com/questions/200640/…
Jelmer
php v5.4.0 - a tag <? = está sempre disponível, independentemente da configuração short_open_tag ini. Portanto, agora você pode usar esta sintaxe.
precisa saber é
7

Apenas escreva:

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

Ou:

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

E 'ecoar' esse valor ...

saadk
fonte
5

Você pode usar a classe de data PHP simples. Ele fornece muitos métodos e funções úteis:

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

Você pode verificar a página de tutoriais da biblioteca para obter mais exemplos

é um
fonte
5

Entre ... existem algumas maneiras apropriadas de exibir os direitos autorais do site. Algumas pessoas tendem a tornar as coisas redundantes, ou seja: Copyright © têm o mesmo significado. As partes importantes dos direitos autorais são:

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

Usando PHP + HTML:

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

ou

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

Para até php 5.4+

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

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

Ou você pode usá-lo com uma linha

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

Se você deseja aumentar ou diminuir o ano, outro método; adicione modificar linha como abaixo.

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

use um PHP date() função .

e o formato será Y. O capital Y será um ano de quatro dígitos.

<?php echo date("Y"); ?>
Sanu0786
fonte
4

melhor código de acesso para esta seção:

<?= date("Y"); ?>
Omid Ahmadyani
fonte
Eu ia escrever o mesmo: D
Lukas
3

Obter ano completo usado:

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

Ou obtenha apenas dois dígitos do ano usados ​​assim:

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

Minha maneira de mostrar os direitos autorais, que continua atualizando automaticamente

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

Ele produzirá os resultados como

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

Você pode usar isso nas seções de rodapé para obter um ano dinâmico de direitos autorais

imtaher
fonte
0

$ ano = data ("Y", horário ($ suaDataVar));

Hernán Eche
fonte
-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
fonte
1
Não é isso que eles estão pedindo, nem uma resposta explicada.
Elliot A.