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

304
Vistas
JavaScript get last day of Month - based on Year, Month and day

I need a JS function to get the last date of the month. as an example, I need to get the last Wednesday of this month.

I will pass Year, Month and day as a arguments.

getLastDayOfMonth('2022', '02', 'Wednesday');

function getLastDayOfMonth(year, month, day){

     // Output should be like this

       2022-02-23    

    (this is last Wednesday of the month, according to the arguments- Year, month and Day)
}
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Create a Date instance with the last day of the month then work backwards one day at a time until you match the day of the week you're after

const normaliseDay = day => day.trim().toLowerCase()
const dayIndex = new Map([
  ["sunday",    0],
  ["monday",    1],
  ["tuesday",   2],
  ["wednesday", 3],
  ["thursday",  4],
  ["friday",    5],
  ["saturday",  6],
])

const getLastDayOfMonth = (year, month, dow) => {
  const day = dayIndex.get(normaliseDay(dow))
  
  // init as last day of month
  const date = new Date(Date.UTC(parseFloat(year), parseFloat(month), 0))
  
  // work back one-day-at-a-time until we find the day of the week
  while (date.getDay() != day) {
    date.setDate(date.getDate() - 1)
  }
  
  return date
}

console.log(getLastDayOfMonth("2022", "02", "Wednesday"))

The numeric values are parsed as numbers so we don't run into problems with zero-padded octal numbers.

about 4 years ago · Juan Pablo Isaza Denunciar

0

You can get the last day of the month then subtract the required number of days based on the difference between the end of month day and required day, e.g.

/* Return last instance of week day for given year and month
 * @param {number|string} year: 4 digit year
 * @param {number|string} month: calendar month number (1=Jan)
 * @param {string} day: English week day name, e.g. Sunday,
 *                      Sun, su, case insensitive
 * @returns {Date} date for last instance of day for given
 *                      year and month
 */
function getLastDayOfMonth(year, month, day) {
  // Convert day name to index
  let i = ['su','mo','tu','we','th','fr','sa'].indexOf(day.toLowerCase().slice(0,2));
  // Get end of month and eom day index
  let eom = new Date(year, month, 0);
  let eomDay = eom.getDay();
  // Subtract required number of days
  eom.setDate(eom.getDate() - eomDay + i - (i > eomDay? 7 : 0));
  return eom;
}

// Examples - last weekdays for Feb 2022
['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'].forEach(day => 
  console.log(day.slice(0,3) + ': ' + getLastDayOfMonth('2022', '02', day).toLocaleDateString('en-GB',{
    year:'numeric',
    month:'short',
    day:'numeric',
    weekday:'short'
  })
));

In the above:

new Date(year, month, 0)

leverages the fact that the month is calendar month whereas the date constructor months are 0 indexed, so the above sets the date to the zeroth day of March, which resolves to the last day in February.

The part:

eom.getDate() - eomDay + i - (i > eomDay? 7 : 0)

subtracts the eomDay index to get to the prior Sunday, then i adds days to get the required day. However, if that goes beyond the end of the month (i.e. i is greater than eomDay so adds more days that eomDay subtracts), it subtracts 7 days.

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