152 votes

Comment obtenir le premier et le dernier jour de la semaine en cours en JavaScript

J'ai un objet today = new Date();. J'ai besoin d'obtenir le premier et le dernier jour de la semaine en cours. J'ai besoin des deux variantes pour le dimanche et le lundi comme un jour de début et de fin de la semaine. Je suis un peu confus maintenant avec un code. Tu peux m'aider ?

280voto

Raynos Points 82706
var curr = new Date; // get current date
var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
var last = first + 6; // last day is the first day + 6

var firstday = new Date(curr.setDate(first)).toUTCString();
var lastday = new Date(curr.setDate(last)).toUTCString();

firstday
"Sun, 06 Mar 2011 12:25:40 GMT"
lastday
"Sat, 12 Mar 2011 12:25:40 GMT"

Cela fonctionne pour le premier jour = dimanche de cette semaine et le dernier jour = samedi de cette semaine. L'étendre pour courir du lundi au dimanche est trivial.

Faire fonctionner avec le premier et le dernier jour dans différents mois est laissé comme un exercice pour l'utilisateur

71voto

Vasant PADHIYAR Points 176

Vous pouvez également utiliser les lignes de code suivantes pour obtenir la première et la dernière date de la semaine :

var curr = new Date;
var firstday = new Date(curr.setDate(curr.getDate() - curr.getDay()));
var lastday = new Date(curr.setDate(curr.getDate() - curr.getDay()+6));

J'espère que ce sera utile.

48voto

Freewalker Points 177

L'excellente (et immuable) librairie date-fns gère cela de la façon la plus concise :

const start = startOfWeek(date);
const end = endOfWeek(date);

Le

jour de début par défaut de la semaine est le dimanche (0), mais il peut être changé en lundi (1) comme suit :

const start = startOfWeek(date, {weekStartsOn: 1});
const end = endOfWeek(date, {weekStartsOn: 1});

15voto

Olivier Points 111

Voici un moyen rapide d'obtenir le premier et le dernier jour, pour n'importe quel jour de début. sachant que :

1 jour = 86,400,000 millisecondes.

Les valeurs des dates JS sont en millisecondes

Recette : déterminez combien de jours vous devez supprimer pour obtenir le jour de début de votre semaine (multipliez par une valeur de 1 jour de millisecondes). Tout ce qui reste après cela est d'ajouter 6 jours pour obtenir votre jour de fin.

var startDay = 1; //0=sunday, 1=monday etc.
var d = now.getDay(); //get the current day
var weekStart = new Date(now.valueOf() - (d<=0 ? 7-startDay:d-startDay)*86400000); //rewind to start day
var weekEnd = new Date(weekStart.valueOf() + 6*86400000); //add 6 days to get last day

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X