Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

204
Visualizações
Obtenga el período de 7 días de la semana pasada a partir de una fecha determinada en Javascript

Estoy tratando de obtener el rango de fechas del miércoles pasado al martes pasado (7 días) a partir de la fecha de hoy. Digamos que la fecha actual es 2022-05-01 (1 de mayo), espero que el resultado sea del martes pasado (fecha de finalización) al miércoles pasado (fecha de inicio = martes pasado -7 días), es decir, del 20 de abril de 2022 al 26 de abril de 2022

 function getStartAndEndDates () { var now = new Date('2022-05-01'); //May 1st 2022 var day = now.getDay(); var diff = (day <= 2) ? (7 - 2 + day ) : (day - 2); var PastTuesday = new Date(); var PastWednesday = new Date(PastTuesday.setDate(now.getDate() - diff)); console.log('End date is', PastTuesday.toISOString()); PastWednesday.setDate(PastTuesday.getDate() - 6); console.log('Start Date is',PastWednesday.toISOString()); return[PastWednesday,PastTuesday]; }
 Output obtained is: End date is 2022-03-27T19:25:35.726Z //here month is set to March Start Date is 2022-03-21T19:25:35.726Z
 Expected Result is End date is 2022-04-26T19:25:35.726Z // month is supposed to be April Start Date is 2022-04-20T19:25:35.726Z

¿Cómo puedo cambiar el código para obtener el resultado esperado?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

deberías hacer algo como

 function getLastWeek(date) { var today = new Date(date); var lastWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7); return lastWeek; } // Your DATE date = '2022-05-01' // var lastWeek = getLastWeek(date); var lastWeekMonth = lastWeek.getMonth() + 1; var lastWeekDay = lastWeek.getDate(); var lastWeekYear = lastWeek.getFullYear(); var lastWeekDisplay = lastWeekMonth + "/" + lastWeekDay + "/" + lastWeekYear; console.log(lastWeekDisplay);

about 4 years ago · Juan Pablo Isaza Relatório

0

En tu código:

 var now = new Date('2022-05-01'); //May 1st 2022

Las fechas en el formato AAAA-MM-DD se analizan como UTC, por lo que lo anterior creará un objeto de fecha que representa 2022-05-01T00:00:00Z.

 var day = now.getDay();

Esto devolverá el número de día local. Para los usuarios con un desplazamiento cero o positivo, devolverá 0 (domingo), pero para los usuarios con un desplazamiento negativo, devolverá 6 (sábado) porque su fecha local sigue siendo el día anterior.

 var diff = (day <= 2) ? (7 - 2 + day ) : (day - 2);

El día dado es 0 (para mí), lo anterior establece la diferencia en 5.

 var PastTuesday = new Date();

Esto crea una fecha para "ahora", que para mí es el 17 de abril.

 var PastWednesday = new Date(PastTuesday.setDate(now.getDate() - diff));

En lo anterior, now.getDate devuelve 1, y 1 - 5 es -4, por lo que establece la fecha para PastTuesday en -4. Ahora PastTuesday es en abril, por lo que se establece en 4 días antes del comienzo de abril, es decir, el 27 de marzo.

Tenga en cuenta que esto ajusta PastTuesday y crea una copia para PastWednesday al mismo tiempo.

 console.log('End date is', PastTuesday.toISOString());

Muestra la fecha y hora UTC equivalentes, con la hora que representa la hora en que se ejecutó el código.

 PastWednesday.setDate(PastTuesday.getDate() - 6);

Establece PastWednesday en 6 días antes de PastTuesday .

De todos modos, lo que se requiere es hacer todo como UTC o local, no mezcle los dos.

Siguiendo el código lo más cerca posible del original y asumiendo que una marca de tiempo en formato AAAA-MM-DD se analiza para la función, considere lo siguiente, que hace todo como local:

 // Parse timestamp in YYYY-MM-DD format as local function parseISOLocal(s = new Date().toLocaleDateString('en-CA')) { let [y, m, d] = s.split(/\D/); return new Date(y, m-1, d); } // Get week Wed to Tue prior to passed date function getStartAndEndDates (date) { // Parse timestamp as local var pastTuesday = parseISOLocal(date); // Adjust pastTuesday to previous Tuesday var day = pastTuesday.getDay(); var diff = (day <= 2) ? (7 - 2 + day ) : (day - 2); var pastWednesday = new Date(pastTuesday.setDate(pastTuesday.getDate() - diff)); console.log('End date is', pastTuesday.toDateString()); // Adjust pastWednesday to previous Wednesday pastWednesday.setDate(pastTuesday.getDate() - 6); console.log('Start Date is',pastWednesday.toDateString()); return [pastWednesday, pastTuesday]; } // Sunday 1 May 2022 console.log(getStartAndEndDates('2022-05-01').map(d => d.toDateString())); // Current date console.log(getStartAndEndDates().map(d => d.toDateString()));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda