Manipuler les dates avec PHP

 

Manipuler les dates avec PHP

  1. Le timestamp unix
  2. Obtenir un timestamp
  3. Obtenir une date
  4. Vérifier la validité d'une date
  5. Liens connexes

Le timestamp unix

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…

Obtenir un timestamp

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.

Obtenir une date

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.

Vérifier la validité d'une date

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) :

  • L'année doit être comprise entre 1 et 32767
  • Le mois doit être compris entre 1 et 12
  • Le jour doit être compris dans l'intervalle de jours du mois donné (les années bissextile sont prises en compte)

Liens connexes

Article écrit le par Bobe
[28] commentairesTop

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

Auteur : Pape Moussa • 12/03/2009 @ 09:04 • #111122

je voudrais savoir comment afficher la date totale en français. Merci

Auteur : SVU • 27/08/2009 @ 14:03 • #118923

Il est inutile de spécifier == true dans un test de booleen

if ($result) sous-entend if ($result==true)

Auteur : joujouta • 19/04/2010 @ 01:25 • #119779

slt, je veux soustraire 2 dates mais j'arrive pas qui peut m'aider stp!!!

Auteur : string php • 17/07/2010 @ 10:44 • #120338

Merci pour cet article, pour ceux qui voudrait soustraire 2 dates, il faut passer par le timestamp pour faire des calculs puis retransformer les dates en version [lien] string pour les afficher

Auteur : samba • 19/08/2010 @ 16:47 • #120700

Salut,
j'aimerai savoir comment on fait appel à un calendrier dans une formulaire .

Déposer un commentaire

Pseudo, Email et Options

Tapez votre commentaire

Note : Vos données personnelles restent strictement confidentielles et ne sont pas réutilisées à votre insu. Vous pouvez consulter à ce propos cette page.

Valid HTML Valid CSS Mozilla et Firebird