connaitre si une date est plus grande qu'une autre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : connaitre si une date est plus grande qu'une autre

par savageman » 22 août 2008, 06:28

Par contre, comme exprimé précedemment, pour moi la comparaison se fait avec un mktime de 1972 mais je me trompe peut etre...
Non, tu as tout à fait raison. mktime(0,0,0,0,0,2) renvoit le timestamp du.... 31 décembre 2001 (pas sûr, mais possible) ! Oui, car l'année 2 est interprétée comme 02, soit 2002 (les années sont comprises entre 1970 et 2038). De plus, le jour 0 n'existe pas, donc ça revient au mois d'avant, idem pour le mois 0.

Il faut bien sûr prendre le timestamp du 1er janvier 1972, soit mktime(0,0,0,1,1,72);

Sinon, ça revient au même de prendre le nombre de secondes qui se sont écoulées en 2 ans, soit 63072000 secondes.

par moileraz » 21 août 2008, 19:26

Bonjour merci pour vos réponses.


Victor BRITO > j'ai mis le code que tu m'as dit mais j'ai tjs une page blanche :(

par Victor BRITO » 21 août 2008, 19:02

J'ai essayé de lire sur mktime mais j'arrive tjs pas à m'en sortir :cry:
Dans cette fonction, le paramètre mois passe avant le paramètre jour.
$annee_debut = "2005"; 
$mois_debut = "08"; 
$jour_debut = "13"; 


$ecart = time () - mktime (0, 0, 0, $mois_debut, $jour_debut, $annee_debut); 

$deuxans = mktime (0, 0, 0, 0, 0, 2); 


if ($ecart >= $deuxans) echo 'ok';

par guilt92 » 21 août 2008, 17:25

$ecart=mktime(0, 0, 0, $jour_debut, $mois_debut, $annee_debut)-time();


Si cette valeur la est négative, ça veut dire que la date du champ est plus grande que celle du jour... Si tu veux un nombre positif il faut donc inverser les membres de l'opération, et faire "date du jour" - "date_saisie".

Par contre, comme exprimé précedemment, pour moi la comparaison se fait avec un mktime de 1972 mais je me trompe peut etre...

par moileraz » 21 août 2008, 16:42

J'ai essayé de lire sur mktime mais j'arrive tjs pas à m'en sortir :cry:

par guilt92 » 21 août 2008, 14:53

Excusez moi de m'immiscer, mais :
$deuxans=mktime(0,0,0,0,0,2); 
Ca me parait faux, quand on sait que le timestamp commence le 01/01/1970, pour moi :
$deuxans=mktime(0,0,0,01,01,1972); 
Si je me trompe, peut on m expliquer pourquoi ?

par jojolapine » 21 août 2008, 14:45

// ça c'est ton écart de date, faut peut-être inversé, les deux partie mais bon ça c'est à toi de voir...

par Sékiltoyai » 21 août 2008, 14:33

Relis la documentation de mktime()…

par moileraz » 21 août 2008, 14:32

j'en déduit que j'ai fait une connerie quelques part :(

par jojolapine » 21 août 2008, 14:31

Donc qu'est-ce que tu en déduit?

par moileraz » 21 août 2008, 14:30

OUps j'ai eu une réponse bizare


int(-116861336)

par jojolapine » 21 août 2008, 14:25

alors si tu fait un var_dump($ecart), je pense que tu auras une surprise ;)

par moileraz » 21 août 2008, 14:24

merci beaucoup pour ton aide alors j'ai ce code :


$annee_debut="2005";
$mois_debut="08";
$jour_debut="13";


$ecart=mktime(0, 0, 0, $jour_debut, $mois_debut, $annee_debut)-time();

$deuxans=mktime(0,0,0,0,0,2);


if($ecart>=$deuxans){
echo "ok";
}
Mais ca m'affiche une page blanche

par jojolapine » 21 août 2008, 14:17

Ok, j'ai compris alors c'est pas très compliqué, en fait, tu fait comme ça:
<?php

$ecart=mktime(/*donnée formulaire*/)-time(); // ça c'est ton écart de date, faut peut-être inversé, les deux partie mais bon ça c'est à toi de voir...

$deuxans=mktime(0,0,0,0,0,2);

if($ecart>$deuxans){
    //blablabla
}
Voilà, c'est dans cet ordre d'idée ;)

par moileraz » 21 août 2008, 14:12

oui enfait

si je fait
if(mktime(...)>mktime(.....)){

}

par exemple 2008-07-01 est plus grand que 2008-05-01 mais la ca fait deux mois d'ecart.

Enfait il faut que l'ecart entre la date du jour et la date de l'utilisateur sois 2ans ou plus

enfait ma question c'est comment validé que l'ecart est bien de 2 ans ou plus

merci pour tes reponses