Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/08/2011, 10h37   #1
Membre régulier
 
Avatar de thecanea
 
Inscription : octobre 2008
Messages : 124
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : octobre 2008
Messages : 124
Points : 71
Points : 71
Par défaut Ajout d'un nombre de jours à une date

Bonjour à tous,

Je n'ai pas encore trouvé d'explications à mon problème : je cherche à ajouter 14 jours à une date donnée (format français jj/mm/aaaa).

J'ai bien trouvé ce script suivant :

Code :
1
2
3
4
5
6
7
8
9
10
<script type='text/javascript'>
var stringDate="12/03/2008";
var TempDate=new Date();
var TabDate=stringDate.split('/');
TempDate.setFullYear(TabDate[2]);
TempDate.setMonth(TabDate[1]);
TempDate.setDate(TabDate[0]*1+60);
var FinalDate=((TempDate.getDate().toString().length==1)?'0'+TempDate.getDate():TempDate.getDate())+'/'+((TempDate.getMonth().toString().length==1)?'0'+TempDate.getMonth():TempDate.getMonth())+'/'+TempDate.getFullYear()
alert(FinalDate)
</script>
Source : http://www.developpez.net/forums/d63...uter-60j-date/

Mais je rencontre un problème sur certains exemples qui donnent des résultats incohérents :

Exemple saisie du 28/02/2010 donne 11/03/2010 ;
alors que d'autres fonctionnent correctement :
31/07/2010 donne 14/08/2010 (Ok)

Auriez vous des idées, un autre algo ou des pistes ?
Je sais que des fois on ajoute un mois, mais pas de façon systématique (la preuve certains calculs fonctionnent), et 2010 n'est pas une année bissextile...

Merci par avance,

Thec
thecanea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h48   #2
Membre régulier
 
Avatar de thecanea
 
Inscription : octobre 2008
Messages : 124
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : octobre 2008
Messages : 124
Points : 71
Points : 71
A priori j'ai trouvé une autre fonction qui fait ce que je voulais :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function addDaysToDate(old_date, delta_days) {
   // Date plus plus quelques jours
   var split_date = old_date.split('/');
   // Les mois vont de 0 a 11 donc on enleve 1, cast avec *1
   var new_date = new Date(split_date[2], split_date[1]*1 - 1, split_date[0]*1 + delta_days);
   var new_day = new_date.getDate();
       new_day = ((new_day < 10) ? '0' : '') + new_day; // ajoute un zéro devant pour la forme
   var new_month = new_date.getMonth() + 1;
       new_month = ((new_month < 10) ? '0' : '') + new_month; // ajoute un zéro devant pour la forme
   var new_year = new_date.getYear();
       new_year = ((new_year < 200) ? 1900 : 0) + new_year; // necessaire car IE et FF retourne pas la meme chose
   var new_date_text = new_day + '/' + new_month + '/' + new_year;
   return new_date_text;
}
Résolu, mais intrigué par les résultats de la première fonction.

Thec
thecanea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h58   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Parce que la première fonction ne prend pas en compte que les mois commencent à 0 en JavaScript, donc la nouvelle date est mise à jour en fonction du nombre de jours du mois suivant.
Code :
1
2
3
4
var maDate = "28/02/2010";
var tabDate = maDate.split('/');
var next14 = new Date(tabDate[2], tabDate[1]-1, +tabDate[0]+14);
alert(next14.toLocaleString());
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/08/2011, 11h03   #4
Membre régulier
 
Avatar de thecanea
 
Inscription : octobre 2008
Messages : 124
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : octobre 2008
Messages : 124
Points : 71
Points : 71
Simple et concis, parfait j'ai compris.

Merci pour l'explication,

Thec

PS : en plus c'est écrit dans le commentaire de la seconde fonction, j'aurai pu y penser, mais je n'avais pas pensé que javascript prenait en compte le nombre de jour du mauvais mois...
thecanea est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h28.


 
 
 
 
Partenaires

Hébergement Web