J'interprète le week-end « le plus proche » comme le week-end précédent pour lundi et mardi, et le week-end prochain pour le jeudi et le vendredi. Vous n'avez fourni aucune information sur quoi faire avec mercredi.
Cependant, d'après d'autres réponses, il semble que vous vouliez soit le week-end actuel pour samedi et dimanche, soit le week-end suivant pour les jours de la semaine.
Ce qui suit est un peu plus concis que d'autres réponses:
/* Get nearest weekend to the provided date
** @param {Date} date - date to get weekends nearst to
** @returns {Array} array of Dates [Saturday, Sunday]
*/
function getNearestWeekend(date) {
// Copy date so don't mess with provided date
var d = new Date(+date);
// If weekday, move d to next Saturday else to current weekend Saturday
if (d.getDay() % 6) {
d.setDate(d.getDate() + 6 - d.getDay());
} else {
d.setDate(d.getDate() - (d.getDay()? 0 : 1));
}
// Return array with Dates for Saturday, Sunday
return [new Date(d), new Date(d.setDate(d.getDate() + 1))]
}
// Some tests
[new Date(2017,0,7), // Sat 7 Jan
new Date(2017,0,8), // Sun 8 Jan
new Date(2017,0,9), // Mon 9 Jan
new Date(2017,0,12) // Thu 12 Jan
].forEach(function(d) {
var opts = {weekday:'short', day:'numeric', month:'short'};
console.log('Date: ' + d.toLocaleString('en-GB',opts) + ' | Next weekend: ' +
getNearestWeekend(d).map(d =>d.toLocaleString('en-GB',opts)).join(' and ')
);
});
Pouvez-vous montrer ce que vous avez essayé jusqu'à présent? Peut-être qu'il a juste besoin d'un tweak. – Marc
Quel est le week-end le plus proche à mercredi? – RobG