Pour bien appréhender la gestion des dates en PHP,
il est nécessaire de comprendre ce qu'est un timestamp unix.
Le timestamp unix représente le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit
GMT.
Trés bien, mais à quoi ça sert, me direz vous. Connaître le timestamp d'un moment donné va vous permettre de travailler avec
pour obtenir toutes sortes d'informations : Vérifier la validité d'une date, classer des membres par ordre d'inscription, etc…
Pour obtenir le timestamp actuel, il vous suffit d'utiliser la fonction time().
La fonction time() ne prend aucun argument et retourne la date courante en secondes depuis le 1er janvier 1970.
<?php
echo time(); // Affichera 1063911060
?>
Cela veut dire qu'il s'est écoulé 1063911060 secondes entre le 1er janvier 1970 à minuit GMT et le 18 septembre 2003 à 18:51:00 GMT.
Intéressons nous maintenant à la fonction mktime().
La fonction mktime retourne, pour une date donnée, le timestamp lui correspondant.
int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst])
Le dernier argument est optionnel et peut être mis à 1 si l'heure d'hiver s'applique, 0 dans le cas contraire, et -1 si on ne sait pas (valeur par défaut).
Exemple d'utilisation de mktime() :
<?php
// Secondes écoulées entre le 1er janvier 1970 et le 27 mai 2002 à midi
echo mktime(12, 0, 0, 5, 27, 2002); Affichera 1022493600
?>
Note : Faites bien attention à l'ordre des arguments sous peine de vous retrouver avec un timestamp incorrect.
Note : Vous pouvez aussi utiliser la fonction gmmktime() qui est équivalente mais considère la date que vous lui donnez comme une date GMT.
La fonction sans conteste la plus utilisée est la fonction date(). En voici la définition :
string date ( string format [, int timestamp])
Le premier argument représente le format de la date. Plusieurs caractères sont possibles pour spécifier le format. En voici quelques uns (extrait de la doc officielle) :
Le deuxième argument, optionnel, est un timestamp unix, par défaut, le timestamp actuel est utilisé.
Quelques exemples :
<?php
echo date('d m Y H:i'); // affichera 18 09 2003 20:21
/*
* Pour utiliser un caractère du format comme un caractère normal,
* vous devez l'échapper avec un backslashe (\)
*/
echo date('H\Hi'); // affichera 20H21
// Les deux exemples suivants sont équivalents,
// ils afficheront 18 September 2003
echo date('d F Y');
echo date('d F Y', time());
?>
Note : La fonction gmdate() est identique en tout point à la fonction date() à ceci près qu'elle retourne une date GMT.
Pour vérifier si une date donnée est valide (une date fournie par un formulaire par exemple), vous pouvez
utiliser la fonction checkdate().
La fonction checkdate() vérifie si la date donnée est valide, si c'est le cas, la fonction retourne true, false dans le cas inverse.
int checkdate ( int month, int day, int year)
Exemple d'utilisation :
<?php
$result = checkdate(13, 10, 2002);
if( $result == true )
{
echo 'la date est valide';
}
else
{
echo 'la date n\'est pas valide';
}
?>
Note : Pour être considérée comme valide, la date doit remplir les conditions suivantes (extrait de la doc officielle) :
Note : Vos données personnelles restent strictement confidentielles et ne sont pas réutilisées à votre insu. Vous pouvez consulter à ce propos cette page.
Des commentaires ?
Auteur : iceman • 13/11/2002 @ 07:07 • #96
salut,
et bien rien à dire.
Mais il faudrait que tu implémentes une fonction pour imprimer tes tutoriels. Ce serait cool.
Sinon du très bon boulot.
Auteur : Bobe • 01/12/2002 @ 04:58 • #109
Oui, bonne idée, l'impression des tutos, je verrais ça prochainement
Auteur : EcliptuX • 10/12/2002 @ 11:35 • #114
Pendant longtemps j'ai cherché la fonction qui me permettait de transformer une date timestamp unix en date lisible par l'homme.
Dommage qu'elle ne soit pas expliquée
Auteur : Bobe • 10/12/2002 @ 18:56 • #117
relis le tuto, la soluce est edans :
echo date("d F Y", time());
rien ne t'empeche, à la place de time(), de mettre ton timetamp unix.
Auteur : layer • 31/05/2003 @ 17:38 • #338
Ca faisait longtemps que je cherchais ça merci !
Auteur : Austinman • 28/06/2003 @ 13:40 • #364
Sa marche super
Auteur : baptiste • 21/12/2003 @ 14:51 • #473
Bonjour.
Je recupere la date du jour avec date()
Mais comment faire pour enlevre 60 secondes, soit 1 minute, a cette date ?
Auteur : Panda • 09/02/2004 @ 10:40 • #501
Pour enlever 60s, passe par le timestamp !
Tu prends le timestamp de ton date(), tu fais une simple soustraction de 60, et tu as un nouveau timestamp avec 1 minute en moins.
Après, date("d-m-Y), $nouveauTimeStamp);
pour la repasser en clair.
Auteur : steph • 24/03/2004 @ 18:32 • #534
slt
j'aimerai savoir comment on fait pour, par exemple, rajouter 10 minutes dans un timestamp unix et qu'ils soient pris en compte
à la lecture de l'heure conventionnelle?
merci
Auteur : Mick • 12/05/2004 @ 16:33 • #559
J'aimerais savoir si il est possible de transformer un nombre qui étais a la base une date excel en une date php;
ex:dans excel la cellule a un format date(12 mai 2004) mais aprés importation dans Mysql la date devient un nombre (38119) qui correspond au 0 janvier 1900+38119jours je criois
comment puis-je changer ce nombre a la date correspondante
Merci
Auteur : Bboy • 07/09/2004 @ 14:35 • #618
De bonnes explications de bons exemples, félicitations.
Auteur : kangaroo • 31/12/2004 @ 09:45 • #642
Bonjour d'Australie!
Merci pour les bonnes explications! Je suis un novice de PHP.
J'ai une question! Je voudrais utilser la fonction checkdate() pour verifier la validite d'une date.
Voici le code!
$resultdate = checkdate($dob);
if ($result == true)
{
echo "Date is wrong.";
exit();
}
Quand je dirige le programme j'obtiens l'erreur suivante.
Warning: Wrong parameter count for checkdate() in d:\phpdev\www\public\sjag\addmember.php on line 63.
Qu'est ce que je fais de mal ?
Merci bien.
Didier
Auteur : le kankre • 25/01/2005 @ 14:05 • #649
La réponse est dans le tutos... faut bien tout lire... .. . ;-)
<?php
$dob = date('m, d, Y');
$result = checkdate($dob);
if( $result == true ) {
echo "Date is wrong.";
exit;
}
?>
Ne pas oublier de définnir la date avant de la checker (logique) et la définnir au bon format (mois, jour, année... avec les virgules)... .. .
:oP
@ tchaOo°
Auteur : re le kankrelune • 25/01/2005 @ 14:11 • #650
Qui plus est si tu ne définnit pas les bonnes variables ça risque pas de marcher
//tu définnit $resultdate
$resultdate = checkdate($dob);
// mais c'est de $result dont tu te sers
// tu peux toujours courrir pour le voir
// le résultat... .. . ;o)
if ($result == true)
Auteur : Julien • 10/03/2005 @ 09:39 • #664
Petite question ...
J'ai un script php pour afficher des news, mais je ne veux afficher que celles qui ont été postées récement (depuis 1 mois max.). Sa à l'air tous simple mais j'avoue que je séche ...
Quelqu'un pourrait-il m'aider ?
Mon adresse email theroyalfougere AT hotmail DOT com
Auteur : apprentie • 18/08/2005 @ 12:59 • #710
je vais peut être vous paraître idiot, mais je ne pratique pas le php, je n'y connais rien, j'ai seulement besoin de convertir des dates en timestamp unix... Ce code bizarre, où dois-je le mettre pour que cela me donne le timestamp désiré?
Auteur : jocoubran • 25/08/2005 @ 18:43 • #715
demande jour anniversaire du 25 octobre 1925
Auteur : cle • 21/09/2005 @ 10:07 • #723
Un problème SVP Je voudrais soustraire deux dates, j'ai éssayé la fonction mktime mais le résultat n'était pas cohérent merci de m'aider
Auteur : MoXX • 23/12/2005 @ 20:49 • #778
Merci pour toutes ces infos.
Auteur : DevSuport • 11/11/2006 @ 09:33 • #2482
Merci Pour la simple explication de tout,
Je voudrais savoir juste, comment recuperer le jour, l'heure, la minute ... séparement a partir d'une date forme "Ymd His" pour faire entrer ces parametres séparés dans la fonction mktime()
Salutations.
Auteur : • 27/06/2007 @ 10:52 • #6594
c'est bien;
car la meilleur façon d'apprendre c'est d'enseigner....
je fume du thé je reste éveillé et le cauchemars continue...........!!!!
Auteur : zeckis • 03/08/2007 @ 17:20 • #7986
bonjoue, j'aimerai utliser les dates, dans une variable et l'afficher dans mon site
du genre"du 15/07 au 8/08" comment et cela de maniere automatique pour que ca s'incrémente au fil des jours
merci, tt t'aide sera le bienvenue
Auteur : spoun7sab • 13/10/2007 @ 18:56 • #11964
bonjour,
j'aimerai que dans la reception d'un mail il y ait marqué la date du 03/04/2007 au lieu de celle du jour. Comment je peux faire? Je bloque sur le timestanp et le mktime. quelqu'un pourrait me donner les lignes de commandes
merci