$limite = date_create($datelimite);
$daycreate = date_create($dateineferieure);
$diff=date_diff($daycreate, $limite);
$limite=$diff->format("%h : %i : %s ");
$datelimite=$show1->heurederniereconnexion;
//date d'aujourd'hui
$day= date('Y-m-d h:i:s');
$limite = date_create($datelimite);
$daycreate = date_create($dateineferieure);
$diff=date_diff($daycreate, $limite);
$limite=$diff->format("%h : %i : %s ");
$aujourdhui= new DateTime();
echo $aujourdhui->format('d-m-Y H:i:s');
On obtient par exemple : 07-10-2015 15:38:24
A ce stade vous êtes en droit de vous dire que c'est nul d'afficher aux visiteurs la date comme cela. En effet, samedi 07 novembre 2015 serait plus charmant non ? Pas de panique, un peu plus bas dans ce tuto, je vais vous expliquer comment faire.
Afficher la date d'une table en SQL par la transformation PHP
si on fait un echo de $initial, la date sera affichée, mais au format anglais : aaaa-mm-jj
ces deux lignes permettent de changer le format de date.
$date= new DateTime( "$initial");
pour l'année, bien mettre un Y en majuscule, les tirets ne sont pas obligatoires...
$requete=$date->format( 'd - m - Y ');
On obtient : jj - mm - aaaa
Biensûr, pour obtenir ce résultat, il faut faire :
SELECT DATE_FORMAT('2008-05-15 22:23:00', '%W %D %M %Y');
Il faut directement dans votre SELECT effectuer cette transformation. Pour l'instant le W, D, M etc. ne vous parlent pas ? pas de panique, je vais vous expliquer ce langage après. Vous pouvez observer que nous avons mis : '2008-05-15 22:23:00' mais nous aurions pu mettre directement le nom de la colonne où se situe la date à afficher de nôtre table !
Explication du langage des dates à connaitre !
Ci-dessous, je vous ai énuméré la définition des lettres pour l'utilisation des années, mois, jours, etc. Il vous ai indispensable de les connaitre un minimum. J'ai pris le temps de vous les classer, ce qui devrait vous faciliter la tache.
Ces formats sont à utiliser pour la transformation des dates en php. En SQL, idem mais utilisez des pourcentages devant, comme dans l'exemple.
Gestion des années :
Y => retourne l'année sur 4 chiffres (2012)
y => retourne l'année mais que les 2 derniers chiffres (2012 = 12 ou 1987 = 87)
Gestion des mois :
d => jours du mois avec deux chiffres ( 1 à 31)
j => jours du mois avec deux chiffres (01 à 31) => avec les zéros si < 10
t => retourne le jour du mois courant
m => retourne le numéro de mois (01 à 12) => avec les zéros si < 10
n => retourne le numéro de mois (1 à 12)
Gestion des jours :
z => Le jours de l'année en commençant par (0 à 365)
w => retourne le numéro de jour de la semaine (0 pour dimanche)
W =>(W majuscule) retourne le numéro du jour de la semaine selon l'ISO 8601 (0 pour lundi)
N =>(N majuscule) depuis PHP 5 retourne le numéro de la semaine ( 1 pour lundi, 7 pour dimanche)
Gestion des heures :
h => retourne l'heure sur 12heures (1 à 12)
g => retourne l'heure sur 12heures (01 à 12) => avec les zéros si < 10
H => heure au format 24heures (0 à 23)
G => heure au format 24 heures (00 à 23) => avec les zéros si < 10
Gestion des minutes :
i => retourne les minutes (00 à 59) =>avec les zéros si < 10
Gestion des secondes :
s => retourne les secondes (00 à 59) => avec les zéros si < 10
u => les micros secondes jusqu'à 6 chiffres après les secondes (secondes 34.456124 microsecondes)
Les inclassables :
I(i majuscule) => retourne 1 si l'heure d'été est activée ou 0 le cas contraire
L(l majuscule) => retourne 1 pour les années bissextiles, sinon 0
Z => (Z majuscule) retourne le décalage horaire en secondes négatif à Ouest et positif à l'Est de la zone UTC
e => retourne l'identifiant du reseau horaire ( UTC n'est pas une time zone mais un time standard "le + utilisé" , GMT "certains pays européens et d'afrique" c'est une time zone, Atlantic/Azores ...)
O => (O majuscule) exprime la différence d'heures avec le GMT (+0200)
P => (P majuscule) idem que ci-dessus mais on rajoute un séparateur, : (+02:00)
T => (T majuscule) abréviation du fuseau horaire (EST, MDT, ..)
c => date complète au format iso8601 (aaaa-jj-mmTHH:mm:ss+00:00) T exprime le passe à l'affichage temps, +00:00 décalage fuseau horaire = (2014-27-10T17:25:30+00:00)
Maintenant que vous savez comment afficher une date, l'afficher en français et que vous connaissez désormais le jargon des dates, passons aux choses sérieuses...
Afficher la date en français : nom du jour de la semaine et nom du mois en français
samedi 07 novembre 2015 au lieu de 07-10-2015 15:38:24
$date=$bdd->prepare("SELECT * FROM table ");
$date->execute();
while($affiche = $date->fetch(PDO::FETCH_OBJ) );
{
//on récupère la date
$d=$affiche->date; // on suppose que la colonne de la table où se situe la date est nommée date
$date= new DateTime ("$d"); // bien mettre des guillemets ici
$dates=$date->format('d');
$num=$date->format('n');
$annee=$date->format('Y');
$format=$date->format('w');
$jour= array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
$mois= array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$date_en_francais=$jour[$format]." ".$dates." ".$mois[$num]." ".$annee;
// $jour[$format] => renvoie le jour de la semaine en fonction du numéro de la semaine 'w' se situant dans le tableau. Le tableau commence par 0 car le premier jour de la semaine 'w' commence par 0
// $mois[$num] => idem que ci-dessus à un détail près, 'n' renvoie le numéro de mois.
}
Autre méthode avec une fonction
public function dateFr() {
$jour= array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'); $mois= array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$day=$jour[date('w')].' '.date('j').' '.$mois[date('n')-1].' '.date('Y'); return $day; }
Vous l'aurez compris qu'on peut utiliser cette fonction dans nôtre exemple, je vous montre comment faire :
public function dateFr() {
$date=$bdd->prepare("SELECT * FROM table "); $date->execute(); while($affiche = $date->fetch(PDO::FETCH_OBJ) ); { $d=$affiche->date; $date= new DateTime ("$d"); $dates=$date->format('d'); $num=$date->format('n'); $annee=$date->format('Y'); $format=$date->format('w'); $jour= array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'); $mois= array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'); $date_en_francais=$jour[$format]." ".$dates." ".$mois[$num]." ".$annee;return $
date_en_francais;
}}
Pour appeller la fonction faites :
dateFr()
Cette astuce vous permettra de faire ressortir l'écart entre deux dates, soit en + soit en - .
Dans cet exemple nous allons calculer le nombre de minutes qui séparent ces deux dates.
$heureconnexion1=$show2->heureconnexion;
$date= new DateTime( $heureconnexion1);
$formataujourdhui3=$date->format( 'i ');
$aujourdhui= new DateTime();
$formataujourdhui2= $aujourdhui->format('i');
$intervalle = $formataujourdhui3 - $formataujourdhui2 ;
En plus du nombre de minutes ci-dessus, on peut calculer le nombre d'heures, secondes, etc. Ici nous allons appliquer cela pour les heures en plus.
$heureconnexion1=$show2->heureconnexion;
$date= new DateTime( $heureconnexion1);
$formataujourdhui3=$date->format( 'H ');
$aujourdhui= new DateTime();
$formataujourdhui2= $aujourdhui->format('H');
$intervalle = $formataujourdhui3 - $formataujourdhui2 ;
Merci pour votre vote !