Comparer deux dates

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 : Comparer deux dates

Re: Comparer deux dates

par moogli » 27 déc. 2011, 09:46

Salut,

Tu es sur le bon forum PHP débutants correspond bien quand on ne sait pas utiliser une fonction ;)

Le premier message d'erreur est dû au fait que la fonction getdate retourne un tableau et que la fonction date_create demande une chaîne de caractère.

Le second message d'erreur est due au premier etant donné que la fonction date_create ne fonctionne pas elle retourne false et donc tu ne passes pas un objet DateTime à la fonction de date_diff.

Je te conseille donc de bien relire la documentation de ces deux fonctions et de réécrire ton code en conséquence.
Tu peux aussi simplement utiliser la classe DateTime, comme indiqué la documentation, si tu ne donnes pas d'information elle va utiliser l'instant présent comme date par défaut.

@+

Re: Comparer deux dates

par Titiii » 27 déc. 2011, 00:31

Bonsoir,
Merci, mais je n'ai pas résolu mon problème (je pense que j'aurais dû le mettre en php avancé)

En fait, la vérification est pour un bannissement. Lors de la connexion, je vérifie quand il a été banni et jusqu'à quand, et si la date de jusqu'à quand est dépassé à la date actuelle, l'utilisateur n'est plus banni. Quand l'utilisateur est banni, un rang spécial lui est assigné (0)

Voici le code :
if ($don1['rang'] == 0)
											{
												$sql2 = "SELECT id_membre, raison, rang_precedent, DATE_FORMAT(date_banni, '%d/%m/%Y %Hh%imin') AS date_banni, DATE_FORMAT(date_retour, '%d/%m/%Y %Hh%imin') AS date_retour FROM bannis WHERE id_membre = '".$don1['id']."' ";
												$req2 = mysql_query($sql2);
												$don2 = mysql_fetch_array($req2);
												$date_actuelle = getdate();
												
												$date_1 = date_create(getdate());
												$date_2 = date_create($don2['date_retour']);
												$intervalle = date_diff($date_2, $date_1, true);
									
												if ($intervalle['%r'] == '-')
												{
													echo 'Désolé, mais vous ne pouvez pas vous connecter. En effet, vous avez été banni le ';
													echo $don2['date_banni'];
													echo ' jusqu\'au ';
													echo $don2['date_retour'];
													echo ' pour la raison suivante : <br /><em>';
													echo $don2['raison'];
													echo '</em><br />';
												}
												else
												{
													mysql_query("UPDATE membres SET rang = '".$don2['rang_precedent']."' WHERE id = '".$don2['id_membre']."' ");
													echo "Vous n'êtes désormais plus banni, nous vous invitons à vous re-connecter <a href='connexion.php' alt='connexion'>ici</a><br />";
												}
											}
Cependant, voici les erreurs que cela m'affiche :
Warning: date_create() expects parameter 1 to be string, array given in /www/test/connexion.php on line 71

Warning: date_diff() expects parameter 1 to be DateTime, boolean given in /www/test/connexion.php on line 73
Merci d'avance (:

Re: Comparer deux dates

par Ryle » 26 déc. 2011, 01:32

Re: Comparer deux dates

par sirakawa » 25 déc. 2011, 21:09

quelque chose comme ça:
<?
$date_1 = date_create('1643-01-01', timezone_open('Europe/Paris'));
$date_2 = date_create('1715-01-01', timezone_open('Europe/Paris'));

echo date_format($date_1, 'd-m-Y') . " pour le début<br />";
echo date_format($date_2, 'd-m-Y') . " pour la fin";
echo ("<hr />");

/* le dernier param true : différence absolue ou false ???*/
$intervalle = date_diff($date_2, $date_1, true);
/*
%r : met un - si l'intervalle est négatif, sinon rien
%y : nombre d'années
%a nombre de jours
*/

echo $intervalle->format('%r%y années  ou %a jours');
echo ("<hr />");
$intervalle_inverse = date_diff($date_1, $date_2, false);
echo $intervalle_inverse->format('%R%y années  ou %a jours');
?>

Re: Comparer deux dates

par Titiii » 23 déc. 2011, 11:03

La première est un DATETIME.

Mais je ne vois pas comment faire (je suppose que tu devais me parler de diff ?)

Re: Comparer deux dates

par sirakawa » 23 déc. 2011, 10:27

http://fr2.php.net/manual/fr/class.datetime.php
contient des informations passionnantes sur les dates, les heures et autres....

Re: Comparer deux dates

par Mazarini » 23 déc. 2011, 09:07

Cela dépend du stockage en mémoire de ta date. Un format timestamp permet des comparaison. Par contre un format string implique de mettre l'année en premier car c'est une comparaison de chaine de caractère.

Comparer deux dates

par Titiii » 22 déc. 2011, 23:45

Bonjour,
J'aimerais comparer deux dates, mais je ne sais pas trop comment m'y prendre.

J'ai fait un if($date1 > $date2) mais ça ne marche pas

Alors en gros : (j'ai simplifier, car je pense que c'est le format de la date qui va pas)
$date1 = d/%m/%Y %Hh%imin
$date2 = getdate()

Comment faut-il faire ?
Merci d'avance.