Page 1 sur 1

comment incrémenter une date ?

Posté : 20 déc. 2008, 15:44
par Tohru222
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

Posté : 20 déc. 2008, 16:12
par luc@s
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];

Posté : 20 déc. 2008, 16:36
par Tohru222
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.

Posté : 20 déc. 2008, 16:38
par caroube
$ts3 = strtotime("+ 3 month", $ts);

Posté : 20 déc. 2008, 17:49
par luc@s
intéressant, je ne connaissais pas cette fonction...
Mais bon, le timestamp c'est toujours plus maintenable :roll: :)

Posté : 20 déc. 2008, 17:59
par chrislabricole
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
;)

Posté : 20 déc. 2008, 18:19
par luc@s
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:

Posté : 21 déc. 2008, 16:13
par Tohru222
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.....

Posté : 21 déc. 2008, 16:28
par jojolapine
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);

Posté : 21 déc. 2008, 16:30
par AB
Sinon il y a aussi un tuto sur la manipulation des dates ici http://www.phpfrance.com/forums/voir_sujet-8323.php

Posté : 21 déc. 2008, 16:46
par luc@s
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 ?

Posté : 21 déc. 2008, 19:21
par Tohru222
... 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

Posté : 22 déc. 2008, 10:34
par zeus
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 !!! ;)