comment incrémenter une date ?

Tohru222
Invité n'ayant pas de compte PHPfrance

20 déc. 2008, 15:44

Bonjour,

Je veux faire un truc tout simple, mais en cherchant j'ai trouvé des trucs que je n'arrive pas à utiliser pour mon cas et j'y comprend rien. Je veux vérifier les comptes utilisateurs non utilisés depuis au moins 3 mois.

je récupère la date de ma base de données ($DernDate) et je veux l'incrémenter de 3 mois (pour comparer cette nvelle date à la date du jour).

comment je peux faire pour incrémenter ma $DernDate de 3 mois ? Elle est au format ("Y-m-d")

merci

Eléphanteau du PHP | 20 Messages

20 déc. 2008, 16:12

Déjà, tu devrais travailler avec le timestamp (nb de secondes, la date étant le nombre de secondes écoulées depuis le 1er Janvier 1970).
D'ailleurs, je serais toi, je stockerais un timestamp en BDD et à l'affichage je ferais :
<?php echo date('Y-m-d', $timestamp); ?>
Mais si tu veux conserver ton système, tu peux toujours découper ta chaine de date en tableau, puis incrémenter les mois :
<?php
$date = explode('-', $date);
$date[1] += 3;
$date = $date[0] . '-' . $date[1] . '-' . $date[2];

Tohru222
Invité n'ayant pas de compte PHPfrance

20 déc. 2008, 16:36

Re,

j'ai essayé

Code : Tout sélectionner

$date = explode('-', $date); $date[1] += 3; $date = $date[0] . '-' . $date[1] . '-' . $date[2];
ça marche bien. sauf que..... si ma date est au mois de décembre. Faire + 3 mois, me met en mois : 15 et non 03. J'ai pas oublié kke chose?

et pour le timestamp... disons ke j'ai quasi fini mon site, et me ferait chier de repasser page par page pour modifier ce format de date.

Eléphant du PHP | 422 Messages

20 déc. 2008, 16:38

$ts3 = strtotime("+ 3 month", $ts);

Eléphanteau du PHP | 20 Messages

20 déc. 2008, 17:49

intéressant, je ne connaissais pas cette fonction...
Mais bon, le timestamp c'est toujours plus maintenable :roll: :)

Mammouth du PHP | 959 Messages

20 déc. 2008, 17:59

Retourne un timestamp en cas de succès, FALSE sinon. Avant PHP 5.1.0, cette fonction retournait -1 en cas d'échec.
http://fr.php.net/manual/fr/function.strtotime.php
;)

Eléphanteau du PHP | 20 Messages

20 déc. 2008, 18:19

Retourne un timestamp en cas de succès, FALSE sinon. Avant PHP 5.1.0, cette fonction retournait -1 en cas d'échec.
http://fr.php.net/manual/fr/function.strtotime.php
;)
sauf que je parle de manipuler du timestamp à 100 %.
Uniquement la fonction date() à l'affichage.

Et alors, je n'utiliserais pas strtotime, mais l'opérateur d'addition :

en gros (sans compter les mois de 30 ou 31 jours)
$time = $last_connection + 24 * 3600 * 30;
:wink:

Tohru222
Invité n'ayant pas de compte PHPfrance

21 déc. 2008, 16:13

Bonjour,

Merci pour vos réponses. J'ai essayé ça :
$ts3 = strtotime("+ 3 month", $ts);
mais heu... je sais que je suis lourde, mais après je fais quoi ? Car si j'affiche $ts3, ben ça me met une suite de chiffre incompréhensible (7778008).

J'ai mis $ts3 = strtotime("+ 3 month", $madate);
madate étant au format date.....

ViPHP
ViPHP | 3607 Messages

21 déc. 2008, 16:28

Comme son nom l'indique, strtotime() renvoi un timestamp, d'où l'impossibilité pour toi de le lire facilement...
Utilise la fonction date()
exemple
$ts3 = strtotime("+ 3 month", $ts);
echo date('d/m/Y',$ts3);

ViPHP
AB
ViPHP | 5818 Messages

21 déc. 2008, 16:30

Sinon il y a aussi un tuto sur la manipulation des dates ici http://www.phpfrance.com/forums/voir_sujet-8323.php

Eléphanteau du PHP | 20 Messages

21 déc. 2008, 16:46

Bonjour,

Merci pour vos réponses. J'ai essayé ça :
$ts3 = strtotime("+ 3 month", $ts);
mais heu... je sais que je suis lourde, mais après je fais quoi ? Car si j'affiche $ts3, ben ça me met une suite de chiffre incompréhensible (7778008).

J'ai mis $ts3 = strtotime("+ 3 month", $madate);
madate étant au format date.....
tu lis les réponses ?

Tohru222
Invité n'ayant pas de compte PHPfrance

21 déc. 2008, 19:21

... oui je lis les réponse et je galère pour kke chose qui devrait être simple normalement....

j'ai essayé

Code : Tout sélectionner

$ts3 = strtotime("+ 3 month", $DernDate); echo "+3 mois:".date('d/m/Y',$ts3)."<br>";
pour ma $DernDate le 2008-12-17, j'ai une date de + 3 mois de 1970-04-01

J'ai regardé sur le site le tuto de date, et ça marche !!!!!!!!!!!!!!!

mon code pour ceux que ça intéresse :

Code : Tout sélectionner

$date = Array('annee'=>substr($DernDate, 0, 4), 'mois'=>substr($DernDate, 5, 2), 'jour'=>substr($DernDate, 8, 2)); $N = 90; $time = mktime(00, 00, 00, $date['mois'], $date['jour']+$N, $date['annee']); $dansNjours = date('d/m/Y', $time); echo "+3 mois:".$dansNjours."<br>";
merciii

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 déc. 2008, 10:34

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer