Date et heure en PHP

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.

Pour manipuler les dates et l'heure en PHP on utilise principalement la fonction date() auquel nous ajoutons le ou les «Format» du tableau ci-dessous et dans l'ordre qui nous convient.
Par exemple, pour obtenir juste l'année en cours sur 4 chiffres, on écrit simplement <?php echo date('Y'); ?> ce qui nous donne comme résultat : 2016. Pour afficher l'heure, c'est la même chose. On se réfère aux «Format» et on écrit simplement <?php echo date('H:i:s'); ?> ce qui nous donne comme résultat 11:35:20. Néanmoins, il faut savoir que l'heure qui est retourné par le serveur est l'heure locale du lieu géographique ou se trouve le serveur... Ainsi, si votre serveur est en Chine, c'est l'heure qu'il est la-bas qu'il retournera!

Format Signification Exemples
Jour
j Correspond au jour du mois sans les zéros initiaux. 1 à 31
<?php echo date('j'); ?>
Résultat : 7
d Correspond au jour du mois sur deux chiffres avec un zéro initial. 01 à 31
<?php echo date('d');?>
Résultat : 07
l Correspond au jour de la semaine en anglais. Sunday à Saturday
<?php echo date('l'); ?>
Résultat : Wednesday
w Correspond au jour de la semaine au format numérique. 0 (dimanche) à 6 (samedi)
<?php echo date('w'); ?>
Résultat : 3
z Correspond au jour de l'année. 0 à 366
<?php echo date('z'); ?>
Résultat : 341
Semaine
W Correspond au numéro de semaine dans l'année. Exemple : 33 (la 33ème semaine de l'année)
<?php echo date('W'); ?>
Résultat : 49
Mois
F Correspond au mois textuel version longue en anglais. January à December
<?php echo date('F'); ?>
Résultat : December
m Correspond au mois au format numérique, avec zéros initiaux. 01 à 12
<?php echo date('m'); ?>
Résultat : 12
n Correspond au mois sans les zéros initiaux. 1 à 12
<?php echo date('n'); ?>
Résultat : 12
t Correspond au nombre de jours dans le mois. 28 à 31
<?php echo date('t'); ?>
Résultat : 31
Année
L Permet de déterminer si l'année est bissextile 1 si bissextile, 0 sinon.
<?php echo date('L'); ?>
Résultat : 1
Y Correspond à l'année sur 4 chiffres Exemples : 1999 et 2003
<?php echo date('Y'); ?>
Résultat : 2016
y Correspond à l'année sur 2 chiffres Exemples : 99 et 03
<?php echo date('y'); ?>
Résultat : 16
Heure
a Ante méridien et Post méridien (minuscules) am ou pm
<?php echo date('a'); ?>
Résultat : am
A Ante méridien et Post méridien (majuscules) AM ou PM
<?php echo date('A'); ?>
Résultat : AM
g Correspond à l'heure (format 12h) sans les zéros initiaux 1 à 12
<?php echo date('g'); ?>
Résultat : 11
G Correspond à l'heure (format 24h) sans les zéros initiaux 0 à 23
<?php echo date('G'); ?>
Résultat : 11
h Correspond à l'heure (format 12h) avec les zéros initiaux 01 à 12
<?php echo date('h'); ?>
Résultat : 11
H Correspond à l'heure (format 24h) avec les zéros initiaux 00 à 23
<?php echo date('H'); ?>
Résultat : 11
s Correspond au secondes avec zéros initiaux 00 à 59
<?php echo date('s'); ?>
Résultat : 20
i Correspond au minutes avec zéros initiaux 00 à 59
<?php echo date('i'); ?>
Résultat : 35
Voici quelques exemples pour bien comprendre :
Affiche l'année actuelle sur 4 chiffres.
<?php echo date('Y');?>
Résultat : 2016
Affiche le mois sur deux chiffres et l'année actuelle sur 4 chiffres.
<?php echo date('m-Y');?>
Résultat : 12-2016
Affiche le jour, mois, année, heure, minute et seconde.
<?php echo 'Le '.date('d-m-Y à H:i:s').''; ?>
Résultat : Le 07-12-2016 à 11:35:20
Un autre exemple plus complexe :
<?php 
$jour = date('d');
$mois = date('m');
$an = date('Y'); 
$heure = date('H'); 
$minute = date('i'); 
$seconde = date('s');
$nombre_de_jour = date('z');
$numero_du_jour_de_la_semaine = date('w');
$numero_de_la_semaine = date('W');
$bissextile = date('L');
echo 'Aujourd\'hui nous sommes le '.$jour.'/'.$mois.'/'.$an.' et il est précisément  '.
$heure.' '; //Si l'heure est supérieure à 1, on ajoute un "s" à heures if($heure > '1'){ echo 'Heures ';} else {echo 'Heure ';} echo ''.$minute.''; //Si la minute est supérieure à 1, on ajoute un "s" à minutes if($minute > '1'){echo ' Minutes ';} else {echo ' Minute ';} echo ''.$seconde.''; //Si la seconde est supérieure à 1, on ajoute un "s" à secondes if($seconde > '1'){echo ' Secondes. ';} else {echo ' Seconde. ';} echo '<br/>Nous sommes sur une année '; if($bissextile ==1){ echo 'bissextile ';} else {echo 'non bissextile ';} echo ' et sur la semaine numéro '.$numero_de_la_semaine.' soit le '.$nombre_de_jour.
' <sup>ième</sup> jour(s) de l\'année et le '.$numero_du_jour_de_la_semaine.
'<sup>ième</sup> jour de la semaine.'; ?>
Résultat :
Aujourd'hui nous sommes le 07/12/2016 et il est précisément 11 Heures 35 Minutes 20 Secondes.
Nous sommes sur une année bissextile et sur la semaine numéro 49 soit le 341ième jour(s) de l'année et le 3 ième jour de la semaine.

Le timestamp

Le timestamp appelé aussi timestamp unix est une fonction qui permet d'obtenir le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit GMT. Pour ce faire, on utilise la fonction time() soit <?php echo time(); ?> qui nous donne comme résultat : 1481106920

Ouaii mais à part ça ... à quoi ça sert ton times truc à la noix??

Le timestamp permet entre autre de calculer des dates ou de remonter des annonces dans un classement par exemple...
Allé, un petit exemple c'est toujours mieux qu'un long discours alors nous allons calculer la date qu'il sera dans 30 jours grâce au timestamp et à la fonction date():

<?php
//timestamp
$t = time();
//date du jour
$aujourdhui = date( "Y-m-d ", $t );
//on ajoute 30 jours soit 24h*30jours=720 heures 
$t += 60*60*720;
$plus30jours = date( "Y-m-d ", $t );
echo 'Aujourd\'hui nous sommes le '.$aujourdhui.' et dans 30 jours, nous serons le 
'
.$plus30jours.'.'; ?>
Ce qui nous donne comme résultat :
Aujourd'hui nous sommes le 2016-12-07 et dans 30 jours, nous serons le 2017-01-06 .
Génial hein ^^...

Conversions d'une date vers un timestamp avec mktime()

PHP permet de convertir une date vers un timestamp. Pour ce faire, on utilise la fonction mktime().
Syntaxe :
mktime(heures, minutes, secondes, mois, jour, année);
Exemple :
<?php 
$jour = date('d');
$mois = date('m');
$an = date('Y'); 
$heure = date('H'); 
$minute = date('i'); 
$seconde = date('s');
echo mktime($heure, $minute, $seconde, $mois, $jour, $an);
?>
Résultat : 1481106920

Conversion d'un timestamp vers une date

Exemple :
<?php
//timestamp du moment
$timestamp_actuel = time();
echo 'Le timestamp actuel est : '.$timestamp_actuel.'<br/>';
//Convertit le timestamp actuel en date
$date_actuel=date("j-m-Y @ H:i:s","$timestamp_actuel");
echo 'La date et heure actuel convertit à partir du timestamp actuel est : 
'
.$date_actuel.'<br/>'; //fonction pour convertir un timestamp en date function convertit_timestamp_en_date($timestamp_actuel) { return date("j-m-Y @ H:i:s", $timestamp_actuel); } echo convertit_timestamp_en_date("$timestamp_actuel"); ?>
Résultat : Le timestamp actuel est : 1481106920
La date et heure actuel convertit à partir du timestamp actuel est : 7-12-2016 @ 11:35:20
La fonction pour convertir un timestamp en date nous retourne : 7-12-2016 @ 11:35:20

Convertir une date anglaise avec la fonction strtotime()

<?php
$date = date("d/m/Y",strtotime($date));
echo $date;
?>
Résultat : 01/01/1970

Convertir une date anglaise avec une expréssion régulière.

<?php
$aujourdhui = date("Y-m-d");
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$aujourdhui, $regs)) {
echo "$regs[3]/$regs[2]/$regs[1]";
}
?>
Résultat : 07/12/2016

Convertir un timestamp en date Française version textuel

Cette fonction permet de convertir un timestamp en date française en affichant le jour et le mois en texte.

<?php
//timestamp du moment
$timestamp_actuel = time();
 
//fonction pour convertir un timestamp en date française
function convertit_date($timestamp_actuel) {
setlocale(LC_TIME, 'fr_FR.ISO_8859-1');
return strftime("%A %d %B %Y ", $timestamp_actuel);
}
echo convertit_date($timestamp_actuel);
?>
Résultat : Mercredi 07 Décembre 2016 - 11:35
Voir/déposer un commentaire (4) | Signaler un problème