Cómo obtener el primer y último día de la semana actual en JavaScript
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?
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.
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 .
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..