Posez votre question Signaler

[PHP] enlever 15jours a une date [Résolu]

Sandriine 1258Messages postés 9 décembre 2006Date d'inscription 18 août 2010Dernière intervention - Dernière réponse le 12 mars 2008 à 17:01
Bonjour,
Admettons une variable $date au format JJ/MM/AAAA contenant une date quelconque (pas celle d'aujourd'hui)
Comment faire pour lui enlever 15 jours ?
Merci à vous
Lire la suite 

[PHP] enlever 15jours a une date »

17 réponses
Réponse
+2
moins plus
salut,

mais pourquoi travailler avec MySQL ?
tu veux du PHP, non ?

regarde les fonctions 'date()' et 'mktime()'.

en exemple le manuel donne :
<?php
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?> 
Ajouter un commentaire
Réponse
+2
moins plus
désolé je l'avais pas testé, voilà ça sa marche:

$date= '2008-12-12'; // fallait le mettre entre quillement..
$NbJoursAEnlever = 15;

$Soustraction = mysql_query("SELECT SUBDATE('$date', INTERVAL $NbJoursAEnlever DAY)");

$Row = mysql_fetch_row($Soustraction);

echo $Row[0] ;
Ajouter un commentaire
Réponse
+0
moins plus
via une requete mysql:

$Soustraction = mysql_query("SELECT SUBDATE('$DATE', INTERVAL $NbJoursAEnlever DAY) FROM table ")or die ("Problem".mysql_error());
Sandriine- 12 mars 2008 à 15:58
OK merci beaucoup parce que je ne connaissais pas du tout ce SUBDATE, mais je voudrais effectuer ce calcul sur une variable , non pas sur un champ d'une table.
Ajouter un commentaire
Réponse
+0
moins plus
ben? tu peux le faire quand même, mettons que ta variable soit:

$date: 2008-12-31;
$NbJoursAEnlever = 15;

$Soustraction = mysql_query("SELECT SUBDATE('$date', INTERVAL $NbJoursAEnlever DAY)");

$Row = mysql_fetch_row($Soustraction);

echo $Row[0];
Sandriine- 12 mars 2008 à 16:12
Tu l'a testé ?? Moi cela ne marche pas... Ce que tu m'a envoyé affiche l'heure, et la date n'est pas bonne
Ajouter un commentaire
Réponse
+0
moins plus
drôle d'idée quand même !

m'enfin…
Ajouter un commentaire
Réponse
+0
moins plus
Ok! effectivement ta solution marche, lintowsca, et dalida (mathieu?) tu pourrais développer ta solution avec mon exemple si ça te dérange pas? Je saisis mal ces fonctions date et mktime...

Merci à vous deux!
Ajouter un commentaire
Réponse
+0
moins plus
de rien content de t'avoir aider,
voici un exemple avec mktime...

// Indiquer le nombre de jours, mois, ans et le signe plus si c'est en positif.
$nb_ans='0';
$nb_mois='0';
$nb_jours = '-15'; // Par exemple
echo 'il y a quinze jours on étais le : ';
echo date('d/m/Y', mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans));


Et voici la fonction :

//--------------------------------------------------------------------
// string fonction MyGetDate([int],[int],[int],[TRUE])
//--------------------------------------------------------------------
// Cette fonction retourne une date "relative" à la date du jour, contrairement à mktime qui retourne une date "absolue".
// L'appel sans argument retourne la date du jour au format 15/11/2004
//
// Les arguments (dans l'ordre) :
// [-] année(s) -> année(s) à ajouter/enlever à la date du jour
// [-] mois -> mois à ajouter/enlever à la date du jour
// [-] jour(s) -> jour(s) à ajouter/enlever à la date du jour
// [True] -> format MySql (2004/11/15)
//---------------------------------------------------------------------
// En cas d'erreur sur les arguments, MyGetDate retourne FALSE.
// Sinon une chaine contenant la date demandée
//---------------------------------------------------------------------
function MyGetDate( $nb_ans='0', $nb_mois='0', $nb_jours='0', $mysql=FALSE){
if( is_int($nb_ans) && is_int($nb_mois) && is_int($nb_jours)){
$mysql ? $format = "Y-m-d" : $format = "d/m/Y";
return date($format, mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans));
}
else{
return FALSE;
}
}
Sandriine- 12 mars 2008 à 16:35
très utile codes sources hein? ^^
Ajouter un commentaire
Réponse
+0
moins plus
lintowsca, pourquoi tu passes par MySQL alors ?

<?php
	setlocale( LC_TIME, "fr" );
	$day = 13;
	$month = 3;
	$year = 1978;
	$birthday = mktime( 0 , 0 , 0 , $month , $day , $year );
	$later = mktime( 0 , 0 , 0 , $month , $day + 15 , $year );
	echo '<p>date de naissance : ' , strftime( "%A %d %B %Y" , $birthday ) , '</p>' ;
	echo '<p>15 jours plus tard : ' , strftime( "%A %d %B %Y" , $later ) , '</p>' ;
?>

Sandriine- 12 mars 2008 à 16:56
Si je pose la question c'est que je ne sais pas comment faire ^^!

Je m'explique pour que tout soit clair :
Dans mon application je dois afficher une intervalle de dates.
Je cherche donc la date la plus récente dans ma base de données, je la met dans une variable appelée $DateRecente, et je cherche la date 15 jours avant $DateRecente puisqu'il s'agit d'un intervalle de 15 jours.

C'est ici que je suis bloquée puisque je ne sais pas comment récupérer cette date.
Dalida- 12 mars 2008 à 17:00
lol, je ne te reproche pas de ne pas savoir !
mais j'avais compris que le faisais en PHP.

mais puisque tu travailles sur ta BDD, utilises la méthode qu'y t'a été proposée en SQL.

en interrogeant ta base, tu peux lui demander au passage de calculer l'intervalle et même de formater la date en français.
DalidaSandriine - 12 mars 2008 à 17:01
les dates en MySQL
Ajouter un commentaire
Réponse
+0
moins plus
car j'avais déjà ce bout de code à portée ;)
Ajouter un commentaire
Ce document intitulé « [PHP] enlever 15jours a une date » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?