¿Cómo uso PHP para obtener el año actual?

937

Quiero poner un aviso de copyright en el pie de página de un sitio web, pero creo que es increíblemente hortera que el año esté desactualizado. ¿Cómo haría que el año se actualice automáticamente con PHP 4 y PHP 5 ?

JD Graffam
fuente
630
echo date("Y");
doub1ejack
2
Recibí una advertencia usando eso. Se agregó date_default_timezone_set ('UTC'); para evitar recibir la advertencia. ('UTC + 1' no funciona ... no puedo decirle mucho como comenzar con PHP). Probablemente haya alguna forma de configurar PHP para evitar lanzar las advertencias (en algunos archivos de configuración como php.ini).
Justin
44
@justin Esto significa que no ha establecido la zona horaria predeterminada y a PHP no le gusta eso. Puede establecer la zona horaria predeterminada en el php.iniarchivo con algo como date.timezone = "America/Los_Angeles"o puede establecerla al comienzo de su código con algo como date_default_timezone_set( "America/Los_Angeles" ).
Joshua Pinter
77
NOTA: El año en un aviso de copyright realmente no tiene mucho valor legal, pero generalmente se agrega para ayudar a las personas que desean saber si el copyright aún se aplica. Como tal, se supone que es el año en que se publicó el trabajo. Simplemente usar el año actual realmente no tiene ningún sentido ... Sin embargo, lo he visto hacer innumerables veces.
Stijn de Witt
77
Yo personalmente argumentaría que se ha convertido en una convención web, por lo que aunque es técnicamente correcto, no es lo que la gente espera. El hecho es que si bien, es decir, "Copyright 2007, todos los derechos reservados" estampados en el pie de página de una página que contiene un artículo escrito en 2007 es técnicamente correcto, es probable que los visitantes del sitio asuman que el sitio ha sido abandonado. Incluso grande las corporaciones con equipos de abogados todavía estampan sus páginas web con el año en curso, incluso si es '2007-2015'.
Nathan Hornby

Respuestas:

1152

Puedes usar fecha o strftime . En este caso, diría que no importa, ya que un año es un año, pase lo que pase (a menos que haya una configuración regional que formatee el año de manera diferente)

Por ejemplo:

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

En una nota al margen, al formatear fechas en PHP, importa cuándo desea formatear su fecha en una ubicación diferente a la predeterminada. Si es así, debe usar setlocale y strftime. De acuerdo con el manual de php en la fecha:

Para formatear fechas en otros idiomas, debe usar las funciones setlocale () y strftime () en lugar de date ().

Desde este punto de vista, creo que sería mejor usar strftime tanto como sea posible, incluso si tiene una posibilidad remota de tener que localizar su aplicación. Si eso no es un problema, elige el que más te guste.

Erik van Brakel
fuente
44
@ErikvanBrakel fuera de su interés el año en curso en Tailandia es 2556. No estoy seguro de si PHP local tiene esto en cuenta, pero en un mundo perfecto debería :)
Dirk Hartzer Waldeck
Podrías simplemente decir: fecha ("Y");
¡Años chinos y japoneses ftw! 2016 年 / 二千 十六 年
Panzercrisis
3
Si pudiera hacer esto en Youtube. "Como si estuvieras viendo esto en <? Php echo date (" Y ");?>"
Luka
¿Por qué lo usé 'y'? : /
Guga Nemsitsveridze
515
<?php echo date("Y"); ?>
Daniel Papasian
fuente
32
Además,<?= date('Y') ?>
Shane Reustle
33
todos los servidores no admiten etiquetas cortas y también hay esto: programmers.stackexchange.com/questions/151661/…
Dirk Hartzer Waldeck
55
En PHP 5.4, puede usar libremente etiquetas de eco cortas como las anteriores. Son mucho más agradables en vistas en mi humilde opinión.
Jimbo
1
@ShaneReustle, te perdiste los puntos y comas al final;) ​​Sé que no son importantes en este caso, pero es una buena práctica para principiantes :)
Dimitar
204

Mi versión súper perezosa de mostrar una línea de derechos de autor, que se mantiene actualizada automáticamente:

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

Este año (2008), dirá:

© 2008 Me, Inc.

El año que viene, dirá:

© 2008-2009 Me, Inc.

y estar siempre actualizado con el año actual.


O (PHP 5.3.0+) una forma compacta de hacerlo usando una función anónima para que no tenga fugas de variables y no repita código / constantes:

&copy; 
<?php call_user_func(function($y){$c=date('Y');echo $y.(($y!=$c)?'-'.$c:'');}, 2008); ?> 
Me, Inc.
Gregmac
fuente
15
Versión más corta (pero menos legible):&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodestruct
Mi versión de una línea:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000
71

Con el encabezado PHP en una dirección más orientada a objetos, me sorprende que nadie aquí haya hecho referencia a la DateTimeclase incorporada :

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

o one-liner con acceso de miembro de clase en instanciación (php> = 5.4):

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

Amo el tiempo de espera . Es una gran función para capturar / recombinar fragmentos de fechas / horas.

Además, respeta la configuración regional que la función de fecha no hace.

Mark Biek
fuente
14

Este te da la hora local:

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

Y este UTC :

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

Esto es lo que hago:

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

a continuación hay un poco de explicación de lo que hace:

d = day
m = month
Y = year

Y le dará cuatro dígitos (por ejemplo, 1990) e y por dos dígitos (por ejemplo, 90)

Abdul Rahman A Samad
fuente
10

echo date('Y')le da el año actual, y esto se actualizará automáticamente ya date()que nos da la fecha actual.

kkarayat
fuente
8

usar una función PHP que se llama date() .

Toma la fecha actual y luego le proporciona un formato

y el formato solo será Y. El capital Y será un año de cuatro dígitos.

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

Este código debería hacer

Abdelkader Soudani
fuente
1
Intente evitar las etiquetas de forma corta, ya sea <? o <? = porque no es una buena práctica. Sin embargo, vale la pena mencionar que muchos buenos frameworks como Zend no permiten el enlace de etiqueta de apertura PHP abreviada, así que por mi bien, presione algunas teclas para guardar la legibilidad de su código.
Wael Assaf
7

Si su servidor admite etiquetas cortas, o usa PHP 5.4, puede usar:

<?=date("Y")?>
PanicGrip
fuente
66
Por favor, nunca, nunca, vuelva a usar etiquetas cortas. stackoverflow.com/questions/200640/…
Jelmer
php v5.4.0: la etiqueta <? = siempre está disponible independientemente de la configuración de short_open_tag ini. Entonces, ahora puede usar esta sintaxis.
nektobit
7

Solo escribe:

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

O:

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

Y 'echo' este valor ...

saadk
fuente
5

Puede usar la simple clase de fecha PHP. Proporciona muchos métodos y funciones útiles:

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

Puede consultar la página de tutoriales de la biblioteca para obtener más ejemplos.

es un
fuente
5

Por cierto ... hay algunas formas adecuadas de mostrar los derechos de autor del sitio. Algunas personas tienden a hacer que las cosas sean redundantes, es decir: Copyright © tiene el mismo significado. Las partes importantes de copyright son:

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

Usando PHP + HTML:

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

o

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

Para hasta php 5.4+

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

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

O puedes usarlo con una línea

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

Si quieres aumentar o disminuir el año otro método; agregue la línea de modificación como a continuación.

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

usa una date()función PHP .

y el formato solo será Y. El capital Y será un año de cuatro dígitos.

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

mejor shortcode para esta sección:

<?= date("Y"); ?>
Omid Ahmadyani
fuente
Iba a escribir lo mismo: D
Lukas
3

Obtenga el año completo utilizado:

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

O obtenga solo dos dígitos del año como este:

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

Mi forma de mostrar los derechos de autor, que se sigue actualizando automáticamente

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

Producirá los resultados como

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

Puede usar esto en las secciones de pie de página para obtener un año de copyright dinámico

imtaher
fuente
0

$ año = fecha ("Y", strtotime ($ yourDateVar));

Hernán Eche
fuente
-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
fuente
1
Esto no es lo que están pidiendo ni una respuesta explicada.
Elliot A.