Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

afficher la date courante moins N jours.

17 réponses
Avatar
JA
Bonjour

Je voudrais afficher la date courante moins N jours. ( jj mm aaaa)
Je ne voudrais pas faire une usine à gaz et réinventer (mal) ce qui a déjà
été fait. Donc prise en compte des mois de 28,29,30 , 31 jours, changement
d'année ...

N devrait être un paramètre, car il pourra changer.

Par avance, merci

Armel

10 réponses

1 2
Avatar
Cenekemoi
Bonjour à JA qui nous a écrit :
Bonjour

Je voudrais afficher la date courante moins N jours. ( jj mm aaaa)
Je ne voudrais pas faire une usine à gaz et réinventer (mal) ce qui a
déjà été fait. Donc prise en compte des mois de 28,29,30 , 31 jours,
changement d'année ...

N devrait être un paramètre, car il pourra changer.

Par avance, merci

Armel



Par exemple:

function addDate(d, nb) {
// additionne nb jours à une date
var d1 = d.getTime(), d2 = new Date();
d1 += 24*3600*1000*nb
d2.setTime(d1)
return d2
}

S'utilise comme ça :

var d = new Date(); // date du jour

var d2 = addDate(d, 5); // additionne 5 jours

alert(d2.toLocaleString()); // ou toute autre méthode sur les dates


--
Cordialement, Thierry ;-)
Avatar
Cenekemoi
Bonjour à Cenekemoi qui nous a écrit :
function addDate(d, nb) {
// additionne nb jours à une date
var d1 = d.getTime(), d2 = new Date();
d1 += 24*3600*1000*nb
d2.setTime(d1)
return d2
}



Evidemment, "nb" peut être négatif dans l'appel de cette fonction...

--
Cordialement, Thierry ;-)
Avatar
Mayeul
Cenekemoi a écrit :
Par exemple:

function addDate(d, nb) {
// additionne nb jours à une date
var d1 = d.getTime(), d2 = new Date();
d1 += 24*3600*1000*nb
d2.setTime(d1)
return d2
}

S'utilise comme ça :

var d = new Date(); // date du jour

var d2 = addDate(d, 5); // additionne 5 jours

alert(d2.toLocaleString()); // ou toute autre méthode sur les dates



Par curiosité, cela peut-il poser des problèmes liés au changement d'heure ?

Peut-on trouver de bonnes ressources sur la gestion des timezones et
changement d'heures des dates en javascript ? Mon Google-fu n'est aps
très bon.

--
Mayeul
Avatar
Olivier Miakinen
Le 24/10/2008 11:59, Mayeul a écrit :

function addDate(d, nb) {
// additionne nb jours à une date
var d1 = d.getTime(), d2 = new Date();
d1 += 24*3600*1000*nb
d2.setTime(d1)
return d2
}



Par curiosité, cela peut-il poser des problèmes liés au changement d'heure ?



OUI.

Pour éviter tout problème, il serait sage de fixer l'heure à midi par
exemple.
Avatar
Olivier Miakinen
Bonjour,

Le 24/10/2008 08:37, JA a écrit :

Je voudrais afficher la date courante moins N jours. ( jj mm aaaa)
Je ne voudrais pas faire une usine à gaz et réinventer (mal) ce qui a déjà
été fait. Donc prise en compte des mois de 28,29,30 , 31 jours, changement
d'année ...

N devrait être un paramètre, car il pourra changer.



Il me semble que la façon la plus simple de procéder devrait être :
var now = new Date();
var d = new Date(now.getFullYear(), now.getMonth(), now.getDate() - N);

Mais ceci devrait marcher aussi :
var d = new Date();
d.setHours(12);
d.setDate(d.getDate() - N);
Avatar
Mickaël Wolff
Cenekemoi a écrit :
d1 += 24*3600*1000*nb



Non.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Mickaël Wolff
JA a écrit :

Je voudrais afficher la date courante moins N jours. ( jj mm aaaa)



Il y a eu une longue discussion à ce sujet à partir du 30 juillet
2008. Je t'invite à regarder dans Google Groups, ou tout autre archiveur
de nos proses.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
SAM
Le 10/24/08 1:20 PM, Olivier Miakinen a écrit :
Bonjour,

Le 24/10/2008 08:37, JA a écrit :
Je voudrais afficher la date courante moins N jours.





Il me semble que la façon la plus simple de procéder devrait être :
var now = new Date();
var d = new Date(now.getFullYear(), now.getMonth(), now.getDate() - N);



Je ne pense pas que cela fonctionne.
(que donne-ce si N est plus grand que le jour actuel ?)
(alors qu'on a fixé le mois)

Mais ceci devrait marcher aussi :
var d = new Date();
d.setHours(12);
d.setDate(d.getDate() - N);



Bof ... combien de chance a t-on de tomber sur 11:59:59 ?

et même ... ça prend l'heure du jour à l'instant 't'
et renvoie l'heure au même instant diminué du nombbre de jours
et finalement on se contente de JJ/MM/AAA

Excepté à 23h59mn59s ça ne posera pas de blème me semble-ce.

Je ne comprends pas ...
Je croyais qu'il suffisait de fixer la date à - n jours ?

var n = -26;

var d = new Date(); // date à cet instant
alert(d);
var j = d.getDate(); // jour à cet instant
d = d.setDate(j+n); // réglage du jour ( j+n )
d = new Date(d); // nouvelle date résultante
alert(d);

sinon, si on joue à soustraire des heures ou des jours à une date
formatée ...
pour sûr on n'aura pas le suivi des mois ni du changement d'heure

Toujours laisser le JS se dépatouiller avec les dates !



function jourAdd( plusOuMoinsJours) {
var d = new Date();
return new Date(d.setDate(d.getDate()+plusOuMoinsJours));
}

alert(jourAdd(-26));


--
sm
Avatar
SAM
Le 10/24/08 10:40 AM, Cenekemoi a écrit :
Bonjour à Cenekemoi qui nous a écrit :
function addDate(d, nb) {
// additionne nb jours à une date
var d1 = d.getTime(), d2 = new Date();
d1 += 24*3600*1000*nb
d2.setTime(d1)
return d2
}



Evidemment, "nb" peut être négatif dans l'appel de cette fonction...



Meu non !

Il suffit de dire quel jour on veut.

function addDate(nb) {
var d = new Date();
var j = d.getDate(); // le lour de maintenant
d = d.setDate( j + nb ); // le jour voulu
return new Date(d); // date au jour voulu
}

et s'il faut soustraire ou ajouter des jours à une date définie
et formatée 'jj/mm/aaaa'


function addDate(d, nb) {
var d = d.split('/');
d = new Date(d[2], d[1]-1, d[0]);
var j = d.getDate(); // le lour d'origine
d = d.setDate( j + nb ); // le jour voulu
d = new Date(d); // date au jour voulu et calculée par le JS
return d.getDate() + '/' + (+d.getMonth()+1) + '/' + d.getFullYear();
}


alert( addDate('24/10/2008', -26));


--
sm
Avatar
SAM
Le 10/24/08 7:33 PM, SAM a écrit :
Le 10/24/08 1:20 PM, Olivier Miakinen a écrit :

Il me semble que la façon la plus simple de procéder devrait être :
var now = new Date();
var d = new Date(now.getFullYear(), now.getMonth(), now.getDate() - N);



Je ne pense pas que cela fonctionne.
(que donne-ce si N est plus grand que le jour actuel ?)
(alors qu'on a fixé le mois)



Ben ... et bien qu'on ait fixé le mois ... ça fonctionne !
(enfin ... ça a l'air de fonctionner)

Mais, néanmoins, normalement, il n'y qu'à bricoler le jour :

var now = new Date();
var d = new Date( now.setDate( now.getDate() - N ) );

--
sm
1 2