Comparaison de date

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 : Comparaison de date

par boubbae » 17 août 2007, 15:41

OK pardon.

Merci encore.

par ouckileou » 17 août 2007, 15:36

Salut,

utilise les balises
 quand tu postes du code, et pense à passer ton sujet en [Résolu]

par boubbae » 17 août 2007, 15:30

C'est bon, je viens d evoir mon erreur.
C'est pas list($date) = explode("-",$datebase); mais $date = explode("-",$datebase);

C'est bon j'ai réussi. Voici le code pour ceux que ça interesse :
$datebase = "02-08-2007 10:00";
list($date) = explode(" ", $datebase);
$date_jma = explode("-", $date);
$mois = intval($date_jma[1]);
echo "Jour : $date_jma[0]<br>";
echo "Mois : $mois<br>";
echo "Année : $date_jma[2]<br>";
Là j'obtiens bien 02 8 2007.

Merci à tous[/i]

par d0m » 17 août 2007, 15:18

pas besoin de list
$date = explode("-",$datebase);
te crée le tableau automatiquement.

ensuite il faut enlever l'heure de $database sinon elle sera avec l'année.

par boubbae » 17 août 2007, 15:12

Voila ce que j'ai fait mais je ne comprend pas pourquoi ça ne marche pas :
$datebase = "02-08-2007 10:00";
list($date) = explode("-",$datebase);
echo "Jour :$date[0]<br>";
echo "Mois : $date[1]<br>";
echo "Année : $date[2]<br>";

Normalement, $date[0] = 02, $date[1] = 08 et $date[2] = 2007. Le résultat que j'obtiens est $date[0] = 0, $date[1] = 2 et $date[2] = "vide".
Donc j'ai fait ça :
$datebase = "02-08-2007 10:00";
list($date) = explode("-",$datebase);
echo "Jour :$date[1]<br>";
echo "Mois : $date[4]<br>";
echo "Année : $date[6789]<br>";

Là j'obtiens bien 2-8 mais rien pour l'année.

Avez-vous une idée ?

par d0m » 17 août 2007, 11:51

Ta date est une chaine de caractères, tu peux utiliser la fonction explode pour découper ta date en 3 variables contenant les 3 chaines que tu peux ensuite transformer en entier avec la fonction intval

Normalement avec la transformation en entier le 0 devant devrait disparaitre.

par boubbae » 17 août 2007, 11:40

Exact ZEUS, j'ai enlevé le zéro et ça marche. Merci.
Par contre peux-tu me dire comment puis-je mettre en variable le jour ($j), le mois($m) et l'année ($y) à partir d'une date donnée (17-08-2007). Je pense que le format de ma date n'est pas correct car dans ce cas ma variable $m va être 08 et non 8 et du coup mon écart ne va plus marcher.

Est-ce que c'est possible ou pas sans changer le format de ma date ?

par d0m » 17 août 2007, 11:01

c'est pas super de compter les jours en fonctions des secondes par exemple les jours ou on perds une heure (heure d'été) ca peut poser problèmes.
Le mieux c'est de comparer via les dates.
$ecart_annees = date('Y') - date('Y',$time);// Y donne l'année
$ecart_jours  = date('z') - date('z',$time) + 365*$ecart_annees //z donne le jour de l'année

par zeus » 17 août 2007, 10:56

le mois ne doit pas commencer par un 0 ;)

par boubbae » 17 août 2007, 10:35

Personne n'a d'idée ?

par boubbae » 08 août 2007, 16:25

Slt

Je viens d'essayer plusieurs trucs et rien ne fonctionne. Par contre je viens de m'apercevoir que le champ de ma base SQL n'est pas de type DATE, il est en VARCHAR. Est-ce que ça peut poser problème ?

J'ai essayé ça pour calculer l'écart de jour entre ma datebase et la date d'aujourd'hui :
$date = Array('annee'=>2007, 'mois'=>08, 'jour'=>09); // la date de départ 
$aujourdhui = time(); // le timestamp d'aujourd'hui 

$time = mktime(0, 0, 0, $date['mois'], $date['jour'], $date['annee']); 
$ecart = $aujourdhui - $time;  
$ecart = floor($ecart / 3600 / 24);  
echo $ecart.' jours<br />'; 
$ecart = floor($ecart / 365);  
echo $ecart.' années'; 
Le soucis, c'est normalement en mettant la date d'aujourd'hui en date de départ je devrais trouver 0 jours mais il me dis 252 jours.

Quelqu'un a une idée ?

par Ryle » 08 août 2007, 16:18

par d0m » 08 août 2007, 16:15

transforme tes dates en timestamp avec la fonction mktime().

par Genova » 08 août 2007, 16:14

Bonjour,
pour comparer des dates en PHP tu dois utiliser des timestamp.

Converti la date de ta base de donnée en timestamp via la fonction mktime() pour cela.

PS : l'opérateur de comparaison "inférieur à" est < et non pas << qui est un opérateur de décalage binaire.

Comparaison de date

par boubbae » 08 août 2007, 16:11

Slt à tous

Je suis débutant et j'ai un soucis avec les dates. :oops:
Dans ma base j'ai une date du genre "01-01-2007 10:00". Je voudrais comparer cette date à la date du jour -7 "$date7 = date("d-m-Y H:i", time()-7*24*3600);". j'arrive bien à récupérer les 2 dates mais quand je fais une comparaison, il me compare que les jours "if($date7<<$datebase)".
En fait je veux que suivant la date une page s'ouvre. Si la datebase est inférieure à date7 tu ouvres et dans le cas contraire tu ouvres une autre page. Mon code fonctionne très bien sauf qu'au lieu de comparer la date complète (01-01-2007 10:00), il compare juste le 1er chiffre soit le jour.

Est-ce que quelqu'un a une idée :?:

Merci