Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

312
Vistas
Given an ISO date, get the days of the week in form of ISO string ranges

Suppose I have an ISO date, such as 2021-09-18T20:18:27.000Z

  1. I would like to get the dates of the past week in form of an array
  2. The array should be a set of arrays that have two ISO dates that represent the start of the day and the end of the day as illustrated below:

E.g.

input:

2021-09-18T20:18:27.000Z

output:

[
['"2021-09-11T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-12T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-13T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-14T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-15T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-16T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-17T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-18T00:00:00.000Z', '"2021-09-18T23:59:59.000Z'],
]

I've already tried it with dayjs, this results in the array representing exact intervals from a particular date:

function getDates(date) {
  var dates = [date]
  var noOfDays = 7

  for (let i = noOfDays - 1; i >= 0; i--) {
    const elementIndex = i - noOfDays // Get last nth element of the list
    const dateToIncrement = dates.slice(elementIndex)[0]
    const newDate = dayjs(dateToIncrement).subtract(1, "day").toISOString()
    dates.unshift(newDate)
  }
  return dates
}

Thank you

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

function getPastWeek(inputTime) {
    var res = []; //result array
    var currentDayEnd = undefined; //variable to be set on each iteration
    var currentDay = new Date(inputTime.split('T')[0]); //create new Date object
    currentDay.setDate(currentDay.getDate() - 7); //reduce seven days from current date

    for(var i = 0; i <= 7; i++) { //foreach day in last week
        currentDayEnd = new Date(currentDay.getTime() - 1000); //previous day end (1sec before current day start)
        currentDayEnd.setDate(currentDayEnd.getDate() + 1); //current day end (one day after previous day end)
        res.push([currentDay.toISOString(), currentDayEnd.toISOString()]); //append pair

        currentDay.setDate(currentDay.getDate() + 1); //set variable to next day
    }

    return res;
}

var pastWeek = getPastWeek('2021-09-18T20:18:27.000Z'); //call example

about 4 years ago · Juan Pablo Isaza Denunciar

0

The OP code is pretty close, you should have been able to adapt it to your needs. The following employs a similar algorithm. End of day is set to 1ms before midnight.

// Given a UTC ISO 8601 timestamp, return array of day plus 
// previous 6 days with start of day, end of day timestmaps
function getDates(d) {
  let s = new Date(d.slice(0,10));
  let e = new Date(+s);
  e.setUTCHours(23,59,59,999);
  let result = [];

  for (let i=7; i; i--) {
    result.push([s.toISOString(), e.toISOString()]);
    s.setUTCDate(s.getUTCDate() - 1);
    e.setUTCDate(e.getUTCDate() - 1);
  }
  return result;
}

console.log(getDates(new Date().toISOString()));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda