2016-09-15 2 views
-1

J'ai ce code qui obtient la date du jour, puis les jours de la semaine. Parfois, ce code ne fonctionne pas, par exemple, aujourd'hui est 08/15, j'obtiendrai 08/13. Je dois aussi avoir une fonction pour les jours précédents et suivants de la semaine.Obtenez les jours précédents et les prochains jours de la semaine en javascript

var self = this; 
var curr = new Date; 
self.mult = 0; 
    self.firstDate = new Date; 
    self.lastDate = new Date; 
    var first = curr.getDate() - (curr.getDay()-1); 
    var last = first + 6; 
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true)); 
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true)); 

Et ceci est la fonction pour voir les jours précédents de la semaine,

var self= this; 
    var curr = new Date; 
    self.mult(self.mult()-7); 
    var first = curr.getDate() - (curr.getDay()-1) + self.mult(); 
    var last = first + 5; 
    if(self.mult() <= 0){ 
     last = last + 1; 
    } 
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true)); 
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true)); 

Et ceci est la fonction pour voir les prochains jours de la semaine,

var self= this; 
    var curr = new Date; 
    self.mult(self.mult()+7); 
    var first = curr.getDate() - (curr.getDay()-1) + self.mult(); 
    var last = first + 5; 
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true)); 
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true)); 

Je suis pas sûr mais je pense que seuls les jours précédents de la semaine est le problème.

Voici un exemple de situation.

Scénario 1: utilisateur visite une page, aujourd'hui est 09/15 alors le firstdate doit être 09/12 alors LASTDATE doit être 09/18 l'utilisateur clique suivant, le firstdate doit être 09/19 et le lastDate est 09/25 l'utilisateur clique à nouveau sur suivant, alors le firstDate est le 09/26 et le lastDate est le 10/02 l'utilisateur cliquent sur le précédent, puis le firstDate doit être 09/19 et le lastDate est le 09/25

Scénario 2: L'utilisateur visite une page, l'aujourd'hui est 09/15 puis le premierDate doit être 09/12 puis lastDate doit être 09/18 l'utilisateur cliquez sur le précédent, puis le firstDate doit être 09/5 et lastDate est 09/11 l'utilisateur clique à nouveau sur le précédent, alors le firstDate doit être le 08/29 et le lastDate est le 09/4 l'utilisateur clique sur suivant, alors le firstDate doit être 09/5 et le dernier date est 09/11

Quelqu'un peut-il répondre à un code qui peut faire mes scénarios?

+0

Pourquoi vous mettez 'this' dans la variable' moi? – evolutionxbox

+0

@evolutionxbox C'est une méthode standard de garder 'this' quand 'this' serait sinon changé hors contexte, par exemple dans la boucle '$ .each',' this' est la valeur dans la boucle alors que 'self' est toujours' this 'de l'extérieur de la boucle. Il n'y a pas de raison ici, mais étant donné l'indentation, je suppose qu'il y a d'autres codes qui n'ont pas été inclus pour des raisons de concision. –

+0

@ freedomn-m Merci quand même. Je savais déjà ce que tu as dit. C'était juste que l'OP l'utilise sans raison. – evolutionxbox

Répondre

0

Vous pouvez utiliser setDate()

par exemple:

var a = new Date(); 
console.log(a) 
//Thu Sep 15 2016 10:22:25 GMT+0200 (CEST) 
a.setDate(a.getDate()+1); 
console.log(a) 
//Fri Sep 16 2016 10:22:25 GMT+0200 (CEST) 
+0

mais comment puis-je obtenir le premier jour de la semaine (lundi) et le dernier jour de la semaine (dimanche)? – JMA

0

Je vous recommande d'utiliser la bibliothèque pour des tâches comme celle-ci. Par exemple moment.js.

Début de la semaine à partir de maintenant

moment(new Date()).startOf('isoWeek').format('MMMM Do YYYY, h:mm:ss ') 

Fin de semaine à partir de maintenant

moment(new Date()).endOf('isoWeek').format('MMMM Do YYYY, h:mm:ss ') 

Pour plus de détails s'il vous plaît voir: http://momentjs.com/