Obtenir l'année en cours en PHP : 5 méthodes simples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi la question sur « l'année en cours » est-elle si populaire ?

\n\n

On pourrait penser que demander à PHP : « Hé, quelle année sommes-nous ? » — et obtenir une réponse — est un jeu d'enfant. Mais détrompez-vous ! La question « How do I use PHP to get the current year? » cumule des dizaines de milliers de vues sur Stack Overflow. Pourquoi ?

\n\n

Premièrement, c'est l'un des premiers défis d'un débutant : afficher « © 2024 » dans le pied de page, créer une liste d'années dynamique dans un formulaire d'inscription, ou simplement vérifier l'âge d'un utilisateur. Deuxièmement, PHP propose plusieurs approches différentes, chacune avec ses subtilités. Troisièmement (et c'est le plus sournois), les novices confondent souvent date('y') et date('Y') — et obtiennent 24 au lieu de 2024. Ensuite, ils s'étonnent que leur site « vive » au siècle dernier.

\n\n

Dans cet article, nous allons passer en revue toutes les méthodes populaires pour obtenir l'année en cours en PHP, des plus évidentes aux plus avancées. Vous apprendrez à éviter les erreurs typiques, à choisir la meilleure approche pour votre projet et à gérer l'année dans différents fuseaux horaires. C'est parti !

\n\n

1. La méthode la plus simple : la fonction date()

\n\n

La reine des fonctions PHP pour manipuler les dates est date(). Elle accepte un format et, optionnellement, un timestamp. Si aucun timestamp n'est fourni, l'heure actuelle du serveur est utilisée.

\n\n

Comment obtenir l'année sur 4 chiffres (2024, 2025…)

\n
<?php\necho date('Y'); // Affiche : 2024\n?>
\n\n

Le symbole Y (majuscule) représente l'année complète sur 4 chiffres. C'est celui qu'il faut utiliser dans 99% des cas.

\n\n

Comment obtenir l'année sur 2 chiffres (24, 25…)

\n
<?php\necho date('y'); // Affiche : 24\n?>
\n\n

Le symbole y (minuscule) donne l'année sur deux chiffres. Utilisez-le uniquement pour un programme jouet ou si vous travaillez avec du code legacy (qui est probablement déjà cassé à cause de problèmes type Y2K).

\n\n

Exemple concret : copyright dans le pied de page

\n
<footer>\n    <p>&copy; 2010–<?php echo date('Y'); ?> Mon super site</p>\n</footer>
\n\n

Ce code mettra automatiquement à jour l'année dans le pied de page — plus besoin de le modifier chaque janvier. Pas mal, non ?

\n\n

2. L'approche orientée objet : la classe DateTime

\n\n

Si vous utilisez du PHP moderne (7.x, 8.x), privilégiez la classe DateTime. Elle est plus flexible, plus facile à manipuler et plus lisible.

\n\n

Obtenir l'année avec DateTime

\n
<?php\n$now = new DateTime();\necho $now->format('Y'); // 2024\n?>
\n\n

La méthode format() fonctionne comme date(), mais sur un objet. L'avantage : vous pouvez facilement modifier la date, ajouter des jours, des mois, puis la reformater.

\n\n

Exemple avancé : année à partir d'une date spécifique

\n
<?php\n$date = new DateTime('2023-03-15');\necho $date->format('Y'); // 2023\n?>
\n\n

C'est utile lorsque vous travaillez avec une base de données et stockez les dates sous forme de chaînes.

\n\n

3. Le bon vieux strftime() (avec une réserve)

\n\n

La fonction strftime() est une autre façon d'obtenir l'année. Elle est pratique car elle prend en compte la locale (langue et paramètres régionaux). Par exemple, avec une locale française, elle peut afficher le nom du mois en français.

\n\n

Exemple avec strftime

\n
<?php\nsetlocale(LC_TIME, 'fr_FR.utf8');\necho strftime('%Y'); // 2024\n?>
\n\n

Mais attention : depuis PHP 8.1, la fonction strftime() est marquée comme obsolète (deprecated). Elle fonctionne encore, mais pourrait être supprimée dans les futures versions. Si vous écrivez du nouveau code, utilisez plutôt DateTime.

\n\n

4. La variable $_SERVER['REQUEST_TIME']

\n\n

Parfois, vous avez besoin d'obtenir l'année « à la volée », sans créer d'objets. Pour cela, utilisez le tableau superglobal $_SERVER.

\n\n


                
                

Blogs

Book Recommendations