Rechercher : dans
Par :

[PHP] enlever 15jours a une date

Dernière réponse le 12 mar 2008 à 17:01:31 Sandriine, le 12 mar 2008 à 15:49:37 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 2.0.0.12

Meilleures réponses pour « [PHP] enlever 15jours a une date » dans :
Vérifier le format d'une date en PHP VoirIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Supprimer les barres d'outils (toolbars) indésirables VoirAvec le temps et les téléchargements de programmes un peu douteux, votre navigateur se retrouve envahi de barres d'outils indésirables et vous ne savez pas quoi faire pour vous en débarrasser ? Voici quelques manipulations simples qui vous aideront...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...

1

lintowsca, le 12 mar 2008 à 15:52:03

Via une requete mysql:

$Soustraction = mysql_query("SELECT SUBDATE('$DATE', INTERVAL $NbJoursAEnlever DAY) FROM table ")or die ("Problem".mysql_error());

Répondre à lintowsca

2

Sandriine, le 12 mar 2008 à 15:58:25

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.

Répondre à Sandriine

3

lintowsca, le 12 mar 2008 à 16:03:21

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];

Répondre à lintowsca

4

Sandriine, le 12 mar 2008 à 16:12:39

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

Répondre à Sandriine

5

Dalida, le 12 mar 2008 à 16:15:48

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);
?> 
[ Mathieu ]
Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci !

Répondre à Dalida

6

lintowsca, le 12 mar 2008 à 16:19:12
  • +1

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] ;

Répondre à lintowsca

7

Dalida, le 12 mar 2008 à 16:22:27

Drôle d'idée quand même !

m'enfin…
[ Mathieu ]

Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci !

Répondre à Dalida

8

Sandriine, le 12 mar 2008 à 16:28:11

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!

Répondre à Sandriine

9

lintowsca, le 12 mar 2008 à 16:33:34

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;
}
}

Répondre à lintowsca

10

Sandriine, le 12 mar 2008 à 16:35:49

Très utile codes sources hein? ^^

Répondre à Sandriine

11

Dalida, le 12 mar 2008 à 16:43:07

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>' ;
?>

[ Mathieu ]
Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci !

Répondre à Dalida

13

Sandriine, le 12 mar 2008 à 16:47:49

Non ma variable est une variable récupérée dans une base, ce qui fait qu'elle change souvent, je ne peux donc pas entrer manuellement la date...

Répondre à Sandriine

14

Dalida, le 12 mar 2008 à 16:50:17

C'est à n'y rien comprendre !!!

c'est une variable, par définition tu y mets ce que tu veux et en récupérant la valeur comme tu le veux.

mais si tu interroges une BDD, fais la travailler !!!

donc c'est un code SQL qu'il te fallait…
[ Mathieu ]

Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci !

Répondre à Dalida

15

Sandriine, le 12 mar 2008 à 16:56:46

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.

Répondre à Sandriine

16

Dalida, le 12 mar 2008 à 17:00:05

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.
[ Mathieu ]

Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci !

Répondre à Dalida

17

 Dalida, le 12 mar 2008 à 17:01:31

les dates en MySQL
[ Mathieu ]

Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci !

Répondre à Dalida

12

lintowsca, le 12 mar 2008 à 16:45:01

Car j'avais déjà ce bout de code à portée ;)

Répondre à lintowsca