Necesito la forma más rápida de obtener el primer día de la semana. Por ejemplo: hoy es 11 de noviembre y jueves; y quiero el primer día de esta semana, que es el 8 de noviembre, y un lunes. Necesito el método más rápido para la función de mapa MongoDB, ¿alguna idea?
javascript
algorithm
En s
fuente
fuente
Respuestas:
Usando el
getDay
método de objetos Date, puede saber la cantidad de días de la semana (siendo 0 = domingo, 1 = lunes, etc.).Luego puede restar ese número de días más uno, por ejemplo:
fuente
diff = d.getDate() - day;
d.setHours(0); d.setMinutes(0); d.setSeconds(0);
No estoy seguro de cómo se compara el rendimiento, pero esto funciona.
O como una función:
fuente
date = new Date(date);
como la primera línea en la función getMonday.Echa un vistazo a Date.js
fuente
Date.parse('last monday');
La respuesta de CMS es correcta, pero supone que el lunes es el primer día de la semana.
La respuesta de Chandler Zwolle es correcta pero juega con el prototipo Date.
Otras respuestas que juegan con horas / minutos / segundos / milisegundos son incorrectas.
La siguiente función es correcta y toma una fecha como primer parámetro y el primer día de la semana deseado como segundo parámetro (0 para el domingo, 1 para el lunes, etc.). Nota: la hora, los minutos y los segundos están configurados en 0 para que comience el día.
fuente
Esto funcionará bien.
fuente
Estoy usando esto
fuente
Esta función usa el tiempo de milisegundos actual para restar la semana actual, y luego resta una semana más si la fecha actual es un lunes (javascript cuenta desde el domingo).
Lo he probado cuando la semana se extiende de un mes a otro (y también años), y parece funcionar correctamente.
fuente
Buena noches,
Prefiero tener un método de extensión simple:
Notarás que esto realmente utiliza otro método de extensión que yo uso:
Ahora, si sus semanas comienzan el domingo, pase un "0" para el parámetro pStartOfWeek, así:
var mThisSunday = new Date().startOfWeek(0);
Del mismo modo, si sus semanas comienzan el lunes, pase un "1" para el parámetro pStartOfWeek:
var mThisMonday = new Date().startOfWeek(1);
Saludos,
fuente
Primer día de la semana
Para obtener la fecha del primer día de la semana a partir de hoy, puede usar algo como esto:
O para obtener el último día de la semana a partir de hoy:
* Dependiendo de su zona horaria, el comienzo de la semana no tiene que comenzar el domingo, puede comenzar el viernes, sábado, lunes o cualquier otro día en que su máquina esté configurada. Esos métodos darán cuenta de eso.
* También puede formatearlo usando un
toISOString
método como este:getLastSunday().toISOString()
fuente
setDate () tiene problemas con los límites de los meses que se mencionan en los comentarios anteriores. Una solución alternativa clara es encontrar la diferencia de fecha usando marcas de tiempo de época en lugar de los métodos (sorprendentemente contradictorios) en el objeto Fecha. Es decir
fuente
Aquí está mi solución:
Ahora puede elegir la fecha por índice de matriz devuelto.
fuente
Un ejemplo del cálculo matemáticamente único, sin ninguna
Date
función.fuente
una versión más generalizada de esto ... esto le dará cualquier día de la semana actual según el día que especifique.
fuente
Echa un vistazo: moment.js
Ejemplo:
Bonus: también funciona con node.js
fuente
moment().startOf('week')
moment().startOf("week")
puede dar la fecha del domingo anterior, dependiendo de la configuración regional. En ese caso, usemoment().startOf('isoWeek')
en su lugar: runkit.com/embed/wdpi4bjwh6rtstartOf()
: momentjs.com/docs/#/manipulating/start-of