Afficher la date et l'heure courante en PHP

Novembre 2012

PHP permet d'afficher la date et l'heure courante dans une page web.

Pour cela, il existe 2 fonctions : date et strftime

Fonction date()

C'est la fonction par défaut utilisée pour afficher une date dans le format souhaité.

Elle affiche le date et/ou l'heure courante dans le format que vous lui indiquez en paramètre.

Voici quelques exemples :

<?php
echo date('Y-m-d H:i:s');  // 2012-10-11 15:35:53
echo date('l j F Y, H:i'); // Thursday 11 October 2012, 15:35
echo date('d F Y');        // 11 October 2012
echo date('d/m/Y');        // 11/10/12
?>

En fait on désigne chaque information qu'on peut extraire à partir de la date (exemple : année sur 2 chiffres, année sur 4 chiffres, mois, numéro de semaine, jour de la semaine en toutes lettres...) par des lettres. Voici quelques-unes de ces lettres :

  • Y : année sur 4 chiffres, ex: 2012
  • y : année sur 2 chiffres, ex: 12
  • m : numéro du mois courant
  • d : jour du mois
  • H : heure sur 24 heures
  • i : minutes
  • s : secondes
  • F : nom du mois (en toutes lettres)

Vous trouverez la liste complète sur la documentation officielle : function.date.php.

Tout ça est très utile, sauf que c'est en anglais (par exemple les noms de jours : Monday, Tuesday... ou les noms de mois : October, Septembreber...)

Afficher la date en français en PHP avec strftime

Il existe une autre fonction qui fait la même chose que date(), mais qui permet en plus de choisir la langue à utiliser : strftime().

La première chose à faire est de définir la langue avec la fonction setlocale.

Ensuite on peut utiliser strftime() :

<?php
// setlocale(LC_TIME, 'fr_FR.UTF8');
// setlocale(LC_TIME, 'fr_FR');
// setlocale(LC_TIME, 'fr');
setlocale(LC_TIME, 'fra_fra');

echo strftime('%Y-%m-%d %H:%M:%S');  // 2012-10-11 16:03:04
echo strftime('%A %d %B %Y, %H:%M'); // jeudi 11 octobre 2012, 16:03
echo strftime('%d %B %Y');           // 11 octobre 2012
echo strftime('%d/%m/%y');           // 11/10/12
?>

Les "marqueurs" ne sont pas les mêmes que pour la fonction date, et ils commencent tous par %.

La liste des paramètres de format est sur php.net : function.strftime.php.

Allez donc jeter un oeil sur cette page : importer un document excel dans une base de données.

Concernant setlocale, j'ai laissé quelques exemples (commentés) dans le code. Si ça ne marche pas avec fra_fra chez vous, essayez les autres : fr_FR...

Cela dépend du serveur (et plus précisément du système d'exploitation sur lequel PHP fonctionne).

Afficher une autre date que la date courante

Les fonctions date() et strftime() prennent un second argument optionnel $time qui correspond au timestamp UNIX de la date que vous voulez afficher.

Le timestamp UNIX est un nombre entier signé qui indique le nombre de secondes écoulées depuis le 1 janvier 1970 (naissance d'unix).

On peut connaitre le timestamp courant avec la fonction time(). On peut aussi connaitre le timestamp d'une date passée avec la fonction mktime().

L'intérêt du timestamp c'est qu'un nombre entier est bien plus facile à manipuler qu'une date composée de jours, mois, années, heure minutes secondes...
On peut facilement soustraire ou additionner des secondes aux timestamp pour avancer ou reculer dans le temps.

Allez donc jeter un oeil sur cette page : coloriser une photo noir et blanc.

4 commentaires :
commentaire n°2862 par mbmk92
mbmk92 mercredi 13 août 2014, 09:08
Bonjour. Grand merci pour ce fabuleux bout de code qui convient à ce que je cherchais. Cependant, j'ai un problème au niveau des caractères spéciaux des mois. Pour le mois d'août par exemple, la fonction strftime() n'affiche pas le 'û'.

Pouvez-vous m'aider à résoudre ce problème svp. Aussi, je ne trouv pas la liste des paramètes de cette fonction sur php.net!

Merci d'avance
commentaire n°3150 par mano10
mano10 mercredi 2 septembre 2015, 21:10
salut j'ai bien compris votre exemple mais mon problème est que je voudrais écrire un code php me permettant de calculer la date de début et d'expiration d'une visite technique pour un véhicule et d'afficher un message me disant que la date d'expiration es proche. Merci
commentaire n°3498 par Sod
Sod samedi 20 mai 2017, 23:27
Un grand merci à toi et à tes explications très claires qui m'ont permis de faire un pas de plus dans la compréhension de la programmation!
commentaire n°3502 par Shaïnah
Shaïnah dimanche 28 mai 2017, 01:50
Merci pour cette astuce.
Deux remarques cependant, comme le post date un peu :
La locale pour la France s'écrit désormais :
setlocale(LC_TIME, 'fr_FR');
Et il ne faut pas oublier de mettre juste après :
date_default_timezone_set("Europe/Brussels"); (si vous voulez la date de Paris).

Voici le lien vers les différents méridien pour avoir la date et heure qui vous conviennent :
http://php.net/manual/en/timezones.europe.php

Enjoy :)
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré