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 finalización de la semana. Ahora estoy un poco confundido con un código. Me puedes ayudar?
javascript
date
Petya petrov
fuente
fuente
var first = curr.getDate() - curr.getDay() +1;
var lastday = new Date(curr.setDate(first.getDate()+6)).toUTCString();
var curr = new Date('2014-10-01T00:00:00'); // 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 firstday = new Date(curr.setDate(first)).toUTCString(); lastday = new Date(curr.setDate(curr.getDate()+6)).toUTCString();
solo he corregido el código de @ RichardN, que está teniendo un pequeño errorTenga cuidado con la respuesta aceptada, no establece la hora en 00:00:00 y 23:59:59, por lo que puede tener problemas.
Recomiendo usar Moment.js para lidiar con las fechas. Para tu caso:
Este es solo un pequeño caso de uso, es realmente simple hacer muchas operaciones complejas.
Puede ver más información aquí: http://momentjs.com/
fuente
var startOfWeek = moment().startOf('isoweek').toDate();
var endOfWeek = moment().endOf('isoweek').toDate();
También puede utilizar las siguientes líneas de código para obtener la primera y la última fecha de la semana:
Espero que te sea de utilidad.
fuente
Aquí hay una forma rápida de obtener el primer y último día, para cualquier día de inicio. sabiendo que:
1 día = 86,400,000 milisegundos.
Los valores de las fechas de JS están en milisegundos
Receta: averigüe cuántos días necesita eliminar para obtener el día de inicio de la semana (multiplique por el valor de 1 día en milisegundos). Todo lo que queda después de eso es agregar 6 días para obtener su día final.
fuente
La excelente (e inmutable) biblioteca date-fns maneja esto de manera más concisa:
El día de inicio predeterminado de la semana es el domingo (0), pero se puede cambiar al lunes (1) de la siguiente manera:
fuente
Podrías hacer algo como esto
Donde
startDay
es un número del 0 al 6 donde 0 representa el domingo (es decir, 1 = lunes, 2 = martes, etc.).fuente
SetDate
establecerá el día del mes. El usosetDate
durante el inicio y el final del mes resultará en una semana incorrectaSi la fecha de configuración u es 01-jul-2014, se mostrará el primer día como 29-jun-2014 y el último día como 05-jun-2014 en lugar de 05-jul-2014
Así que supera este problema que usé
fuente
Esto funciona con los cambios de año y mes.
fuente
Recomiendo usar Moment.js para tales casos. Tenía escenarios en los que tenía que verificar la fecha y hora actual, esta semana, este mes y la fecha de este trimestre. La respuesta anterior me ayudó, así que pensé en compartir el resto de las funciones también.
Simplemente para obtener la fecha y hora actual en un formato específico
La semana comienza en domingo y termina el sábado si simplemente usamos 'semana' como parámetro para la función endOf, pero para obtener el domingo como final de semana, debemos usar 'isoweek'.
Elegí este formato según mi necesidad. Puede cambiar el formato según sus necesidades.
fuente
* fecha actual == 30.06.2016 y el lunes es el primer día de la semana.
También funciona durante diferentes meses y años. Probado con qunit suite:
fuente
Esto será útil para cualquier escenario de fecha.
fuente
El método de krtek tiene algunos errores, probé esto
funciona
fuente
Aunque la pregunta parece obsoleta, debo señalar un problema.
Pregunta: ¿Qué pasará el 1 de enero de 2016?
Creo que la mayoría de las soluciones anteriores calculan el inicio de la semana como 27.12.2016. Por esta razón, creo que el cálculo correcto debería ser como el siguiente simplemente;
fuente
Buena sugerencia, pero tuvo un pequeño problema el último día. Deberías cambiarlo a:
fuente
El enfoque de momento funcionó para mí en todos los casos (aunque no he probado los límites como fin de año, años bisiestos). La única corrección en el código anterior es que el parámetro es "isoWeek", si desea comenzar la semana desde el lunes.
fuente
Simplemente usando javascript puro, puede usar la función a continuación para obtener el primer día y el último día de una semana con la configuración libre del día para el inicio de la semana.
El último día de la semana es solo 6 días después del primer día de la semana
Prueba:
fuente
JavaScript
Mecanografiado
fuente
Hemos agregado el código jquery que muestra la semana actual de días de lunes a domingo.
fuente
Una pregunta antigua con muchas respuestas, por lo que otra no será un problema. Algunas funciones generales para obtener el inicio y el final de todo tipo de unidades de tiempo.
Para startOf y endOf week, el día de inicio de la semana es el domingo (0) por defecto, pero se puede pasar cualquier día (lunes - 1, martes - 2, etc.). Sin embargo, solo usa el calendario gregoriano.
Las funciones no mutan la fecha de origen, por lo que para ver si una fecha está en la misma semana que otra fecha (la semana comienza el lunes):
o en la semana actual a partir del domingo:
fuente
Pequeño cambio en la respuesta de @Chris Lang. si quieres el lunes como primer día, usa esto.
Gracias @Chris Lang
fuente