Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

280
Views
¿Cómo puedo encontrar el lunes en la semana actual en el nodo js?

Tengo el siguiente código para obtener el lunes actual según el parámetro de fecha dado. Funciona bien la mayor parte del tiempo. Pero no funciona cuando cruza el año. Por ejemplo, si paso new Date('2020-01-02T15:33:50Z') como parámetro, devuelve 2019-12-29T15:33:50.000Z que no es correcto. Debería regresar 2019-12-30 . ¿Cómo puedo hacer que funcione para el caso de años cruzados?

 function getMonday(d) { d = new Date(d); var day = d.getDay(), diff = d.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday return new Date(d.setDate(diff)); }
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Mi idea en este sentido es que si hay tal problema con los años cruzados, puede intentar comenzar desde el formato sin formato en el que se presenta la fecha, es decir, el número de milisegundos desde 1970, y operar con este número para encontrar el lunes. . Por ejemplo como este:

let currentDate = new Date(); obtener la fecha actual

let currentDateMs = currentDate.getTime(); obtener la fecha actual en milisegundos

let dayNumber = (currentDate.getDay() + 6) % 7; en el objeto Fecha, la cuenta regresiva de los días de la semana comienza desde el domingo, por lo que la cambiamos para que comience desde el lunes

let result = currentDateMs - 86400000 * dayNumber; restamos el número de milisegundos en un día (1000 * 3600 * 24 = 86400000) multiplicado por el número del día actual (0-6) de la fecha actual, y también debido a esto, no necesitamos verificar si es Lunes, ya que el número de lunes aquí es 0 y esto eliminará restas innecesarias

let resultDate = new Date(result);

console.log(resultDate.toDateString());

over 4 years ago · Santiago Trujillo Report

0

Puede cambiar todas las fechas a marcas de tiempo y luego restar la diferencia.

 function getMonday(d) { const value = new Date(d) const value_seconds = value.getTime() / 1000 const value_day = value.getDay() let diff_seconds = 0 // default, expect value_day is monday if(value_day > 1){ // if day is tuesday to saturday const diff_day = value_day - 1 diff_seconds = diff_day * 24 * 3600 // find different in seconds } if(value_day === 0){ // if days is sunday const diff_day = 6 // substract by 6 days, back to monday diff_seconds = diff_day * 24 * 3600 // find different in seconds } const result_second = value_seconds - diff_seconds const result = result_second * 1000 return new Date(result); } const today = new Date() console.log(getMonday(today)) console.log(getMonday(today).getDay()) const issuedDate = new Date('2020-01-02T15:33:50Z') console.log(getMonday(issuedDate)) console.log(getMonday(issuedDate).getDay())
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!