1118 votes

Comment utiliser PHP pour obtenir l'année en cours ?

Je veux mettre un avis de droit d'auteur dans le pied de page d'un site web, mais je pense que c'est incroyablement de mauvais goût que l'année soit dépassée.

Comment faire pour que l'année soit mise à jour automatiquement avec PHP 4 o PHP 5 ?

715 votes

echo date("Y");

2 votes

J'ai reçu un avertissement en utilisant ça. J'ai ajouté date_default_timezone_set('UTC') ; pour éviter d'avoir l'avertissement. ('UTC+1' ne fonctionne pas... je ne peux pas vous en dire plus car je débute avec PHP). Il y a probablement un moyen de configurer PHP pour éviter les avertissements (dans un fichier de configuration comme php.ini).

5 votes

@justin Cela signifie que vous n'avez pas défini le fuseau horaire par défaut et PHP n'aime pas cela. Vous pouvez soit définir le fuseau horaire par défaut dans le fichier php.ini avec quelque chose comme date.timezone = "America/Los_Angeles" ou vous pouvez le définir au début de votre code avec quelque chose comme date_default_timezone_set( "America/Los_Angeles" ) .

1406voto

Erik van Brakel Points 7589

Vous pouvez utiliser soit date o strftime . Dans ce cas, je dirais que cela n'a pas d'importance puisqu'une année est une année, quoi qu'il en soit (à moins qu'il y ait une localité qui présente l'année différemment ?)

Par exemple :

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

Par ailleurs, lorsque vous formatez des dates en PHP, il est important de savoir si vous souhaitez les formater dans une autre locale que celle utilisée par défaut. Si c'est le cas, vous devez utiliser setlocale et strftime. Selon le manuel php à la date prévue :

Pour formater les dates dans d'autres langues, vous devez utiliser les fonctions setlocale() et strftime() au lieu de date().

De ce point de vue, je pense qu'il serait préférable d'utiliser strftime autant que possible, si vous avez la moindre possibilité de devoir localiser votre application. Si ce n'est pas un problème, choisissez celui que vous préférez.

6 votes

@ErikvanBrakel juste à titre d'information, l'année en cours en Thaïlande est 2556. Je ne sais pas si les paramètres locaux de PHP prennent cela en compte mais dans un monde parfait, cela devrait :)

1 votes

Vous pourriez simplement dire : date("Y") ;

0 votes

Années chinoises et japonaises ftw ! /

549voto

Daniel Papasian Points 10206
<?php echo date("Y"); ?>

35 votes

Les balises courtes ne sont pas prises en charge par tous les serveurs et il y a aussi ceci : programmateurs.stackexchange.com/questions/151661/

5 votes

En PHP 5.4, vous pouvez utiliser librement les balises echo courtes comme celle ci-dessus. Elles sont beaucoup plus jolies dans les vues, à mon avis.

1 votes

@ShaneReustle, vous avez oublié les points-virgules à la fin ;) Je sais qu'ils ne sont pas importants dans ce cas, mais c'est une bonne pratique pour les débutants :)

216voto

gregmac Points 12813

Ma version super paresseuse de l'affichage d'une ligne de copyright, qui reste automatiquement mise à jour :

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

Cette année (2008), il sera dit :

2008 Me, Inc.

L'année prochaine, elle dira :

© 2008-2009 Me, Inc.

et rester toujours à jour avec l'année en cours.


Ou (PHP 5.3.0+) une manière compacte de le faire en utilisant une fonction anonyme afin d'éviter les fuites de variables et la répétition de code/constantes :

&copy; 
<?php call_user_func(function($y){$c=date('Y');echo $y.(($y!=$c)?'-'.$c:'');}, 2008); ?> 
Me, Inc.

18 votes

Version plus courte (mais moins lisible) : &copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.

1 votes

Ma version en une ligne : <?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>

83voto

Thomas Kelley Points 4963

Avec PHP se dirigeant vers une direction plus orientée objet, je suis surpris que personne ici n'ait fait référence à l'outil intégré DateTime classe :

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

ou one-liner avec accès aux membres de la classe lors de l'instanciation (php>=5.4) :

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

33voto

chrisb Points 1297

http://us2.php.net/date

echo date('Y');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X