OVH Cloud OVH Cloud

date et php

3 réponses
Avatar
Andre Ebongue
j'ai lu le manuel de php sur date(), mais j'ai encore un doute. A-t-il un
sens de comparer 2 date de cette manière?
$aujourdhui=date('now');
$delai=$aujourdhui-$date_insertion;
avec $date_insertion prise d'une ligne d'un db.
Ou bien dois-je formater la date e si soui quelle est la meilleure formation
dans le cas où j'ai une boucle qui dois toujours confronter 2 dates? merci

3 réponses

Avatar
Claude
je crois que le plus simple est de passer par timestamp()


"Andre Ebongue" a écrit dans le message de
news:LBuSb.2115$
j'ai lu le manuel de php sur date(), mais j'ai encore un doute. A-t-il un
sens de comparer 2 date de cette manière?
$aujourdhuiÚte('now');
$delai=$aujourdhui-$date_insertion;
avec $date_insertion prise d'une ligne d'un db.
Ou bien dois-je formater la date e si soui quelle est la meilleure
formation

dans le cas où j'ai une boucle qui dois toujours confronter 2 dates? merci


Avatar
phil
"Andre Ebongue" a écrit dans le message news:
LBuSb.2115$
j'ai lu le manuel de php sur date(), mais j'ai encore un doute. A-t-il un
sens de comparer 2 date de cette manière?
$aujourdhuiÚte('now');
$delai=$aujourdhui-$date_insertion;
avec $date_insertion prise d'une ligne d'un db.
Ou bien dois-je formater la date e si soui quelle est la meilleure
formation

dans le cas où j'ai une boucle qui dois toujours confronter 2 dates? merci


Bonjour Andre,
les fonctions de dates sont toujours delicates à choisir et à utiliser. Deux
techniques sont en lice : donner la date par une chaine de caractères (fct
date())ou la donner sous la forme d'un entier correspondant au nb de
secondes ecoulées depuis le 01/01/1970 (fct time() et mktime()).

$aujourdhuiÚte('YmdHis');
donne la date du jour au format timestamp de mysql, en chaine de caractere.
si $date_d'insertion est issu de mysql, on peut les comparer avec strcmp,
pour decider laquelle est la plus recente, mais il ne faut pas en faire de
soustraction.
En effet :
le 05 novembre 2004 à 12h59mn59s ça donnera 20041105125959
et à 13 h, soit 1 mn (60s) plus tard ca donnera 20041105130000
la différence fait 4041 !!! et on ne sait pas en quelle unité c'est.

Pour definir un delais en soustrayant deux dates il faut passer par time()
et mktime() pour obtenir la date en secondes, puis convertir ces secondes au
format souhaité.
$aujourdhui=time();

$an=substr($date_insertion,0,4);
$mois=substr($date_insertion,4,2);
$jour=substr($date_insertion,6,2);
$heure=substr($date_insertion,8,2);
$minute=substr($date_insertion,10,2);
$seconde=substr($date_insertion,12,2);
$dateinsertion=mktime($heure,$minute,$seconde,$mois,$jour,$an);
$delais=$aujourdhui-$dateinsertion;

maintenant, conversion en durée jour, heure,mn, s
Mais on ne peut pas faire tout simplement
$txt_delaisÚte('YmdHis',$delais);
car on va avoir une date et non une durée. Donc il faut se taper la
conversion à la main :
$nb_j=floor($delais/(3600*24));
$delais=$delais-($nb_j*3600*24);
$nb_h=floor($delais/3600);
$nb_mn=floor($sec/60);

Yapuka afficher :
echo "donnée inserée depuis $nb_j jour(s) $nb_h heure et $nb_mn mn";

si quelqu'un connait les fonction php qui font ces conversions, qu'il le
dise, moi j'ai pas trouvé.

Bon php

Philippe


--
-----------------------------------------------------------------
Assouplissez vos doigts :
Imprimez et fabriquez un tangram 3D!
C'est sur http://www.visualkit.com et pas ailleurs

Avatar
Stephane
"Andre Ebongue"a écrit
j'ai lu le manuel de php sur date(), mais j'ai encore un doute. A-t-il un
sens de comparer 2 date de cette manière?
$aujourdhuiÚte('now');
$delai=$aujourdhui-$date_insertion;
avec $date_insertion prise d'une ligne d'un db.
Ou bien dois-je formater la date e si soui quelle est la meilleure formation
dans le cas où j'ai une boucle qui dois toujours confronter 2 dates? merci


Salut,

Il y a des fonctions Mysql toute faite:
SELECT TO_DAYS( NOW( ) ) - TO_DAYS( date_insertion) AS delai

te retourne le nombre de jour écoulé.

Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.

http://www.velo-passion.com