2017-01-07 5 views
-2

Je pensais beaucoup - j'ai essayé mais je n'ai pas pu le résoudre. J'ai besoin d'une application JavaScript qui montre les dates de week-end les plus proches dans la date actuelle.Application JavaScript pour afficher les dates de fin de semaine?

Si c'est un week-end maintenant, donnez-lui les dates de cette fin de semaine, sinon, puis les dates du week-end prochain.

J'attends votre aide. Respects.

+6

Pouvez-vous montrer ce que vous avez essayé jusqu'à présent? Peut-être qu'il a juste besoin d'un tweak. – Marc

+0

Quel est le week-end le plus proche à mercredi? – RobG

Répondre

1

Vous pouvez utiliser le constructeur Date intégré.

var date = new Date(); 
 
var day = date.getDay(); 
 
var saturday; 
 
var sunday; 
 
if(day === 0 || day === 6){ //0 for Sunday, 6 for Saturday 
 
    saturday = date; 
 
    sunday = new Date(saturday.getTime()); 
 
    sunday.setDate(saturday.getDate() + (day === 0 ? -1 : 1)); 
 
    if(day === 0){ 
 
     var temp = saturday; 
 
     saturday = sunday; //Confusing, but they are actually the wrong dates, so we are switching the dates 
 
     sunday = temp; 
 
     temp = null; //Free up some memory! 
 
    } 
 
     
 
} 
 
else{ 
 
    //This is the complicated part, we need to find when is the next Saturday 
 
    saturday = new Date(date.getFullYear(), date.getMonth(), (date.getDate() + 6) - day); 
 
    sunday = new Date(saturday.getTime()); 
 
    sunday.setDate(saturday.getDate() + (saturday.getDay() === 0 ? -1 : 1)); 
 
} 
 
date = day = null; //Free up some memory! 
 
document.body.innerText = [saturday, sunday];

Pour obtenir la date, utilisez saturday.getDate() ou sunday.getDate() .Remember que Date mois sont 0-basés. Voir here pour plus d'informations.

+0

Merci beaucoup pour votre aide, mais ce code ne montre que samedi. J'ai besoin de samedi et dimanche. –

+0

Je vais mettre à jour cela. Mais le voulez-vous dans les deux cas ou dans un seul cas? – MasterBob

+0

En fait, la seule chose dont j'ai besoin est les dates du samedi et du dimanche. –

0
var chosenDay = new Date(); 
    var box = []; 
    var counting = 0; 
    for (var i = 0; i < 7; i++) { 
     chosenDay.setDate(chosenDay.getDate() + counting); 
     var day = chosenDay.getDate(); 
     var dayy = chosenDay.getDay(); 
     var month = chosenDay.getMonth()+1; 
     var year = chosenDay.getFullYear(); 
     box.push({day: day, dayy: dayy}); 
     counting = 1; 
    }; 

maintenant pour trouver le samedi et le dimanche

box.map(function(obj) { 
if (obj.dayy === 6) { 
    console.log('Saturday found'); 
    alert(obj.day); 
}; 
if (obj.dayy === 0) { 
    console.log('Sunday found'); 
    alert(obj.day); 
}; 
}); 
0

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