Cómo obtener el primer y último día de la semana actual en JavaScript

Resuelto Petya petrov asked hace 13 años • 31 respuestas

tengo today = new Date();objeto. Necesito obtener el primer y último día de la semana actual. Necesito ambas variantes para el domingo y el lunes como día de inicio y fin de la semana. Ahora estoy un poco confundido con un código. ¿Puedes ayudarme?

Petya petrov avatar Mar 06 '11 19:03 Petya petrov
Aceptado
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"

Esto funciona para el primer día = domingo de esta semana y el último día = sábado de esta semana. Extenderlo para que funcione de lunes a domingo es trivial.

Hacer que funcione con el primer y último día en diferentes meses se deja como ejercicio para el usuario.

Raynos avatar Mar 06 '2011 12:03 Raynos

Ojo con la respuesta aceptada, no pone la hora en 00:00:00 y 23:59:59, por lo que puedes tener problemas.

Puede utilizar una biblioteca de fechas de terceros para gestionar las fechas. Por ejemplo:

var startOfWeek = moment().startOf('week').toDate();
var endOfWeek   = moment().endOf('week').toDate();

EDITAR: A partir de septiembre de 2020, se desaconseja el uso de Moment para nuevos proyectos ( publicación de blog )

Otra alternativa popular es date-fns .

Bruno Lemos avatar Nov 14 '2014 02:11 Bruno Lemos

También puede utilizar las siguientes líneas de código para obtener la primera y la última fecha de la semana:

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

Espero que sea de utilidad..

Vasant PADHIYAR avatar Nov 02 '2012 07:11 Vasant PADHIYAR