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

192
Views
El objeto de fecha JS calcula si el tiempo de envío es inferior a una hora

Tengo un problema en el que no estoy seguro de cómo calcular si es una hora o menos entre una fecha de envío y la hora actual usando el objeto JS Date. lo que he hecho hasta ahora es convertir la cadena de entidad.dispatchDate en un objeto de fecha, sin embargo, este caso que he escrito hasta ahora devuelve verdadero siempre que el objeto de fecha de fecha de hoy sea igual o mayor que la fecha de envío. Lo que creo que tengo que hacer es, en primer lugar, no usar 1 hora sino minutos, ya que necesito dar cuenta de cada escenario que se encuentra dentro de esa hora, por ejemplo, si es una hora antes, 15 minutos o 30 minutos para regresar verdadero. Lo que he escrito hasta ahora:

 // OPTIONS const hoursBeforeSendout = 1; // END OF OPTIONS if(!entity.dispatchDate) { return false; } var sendDate = new Date(Date.parse(entity.dispatchDate)); Date.prototype.addHours = function(h) { this.setTime(this.getTime() + (h*60*60*1000)); return this; } var todaysDate = new Date(); todaysDate.addHours(hoursBeforeSendout); if(todaysDate >= sendDate) { return true; } return false;

Agradecería cualquier aporte aquí sobre cuál sería el mejor enfoque

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Sugeriría simplemente restar la fecha actual (usando Date.now()) de la fecha de envío.

Si esto está por debajo de la duración del umbral, es 'vencido' o 'cerrado':

 function isDispatchDateClose(dispatchDate, thresholdMs = 3600 * 1000) { if (!dispatchDate) { return false; } const timeToDispatchDateMilliseconds = Date.parse(dispatchDate) - Date.now(); return (timeToDispatchDateMilliseconds <= thresholdMs); } let dispatchDates = [0, 30, 45, 90, 120].map(offsetMinutes => new Date(Date.now() + offsetMinutes * 60000).toLocaleString('sv')); console.log('Dispatch Date', '\t\t', 'Is Close ( < 1 hr to go)'); for(let dispatchDate of dispatchDates) { console.log(dispatchDate, '\t', isDispatchDateClose(dispatchDate)) }
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

Si todo lo que desea es saber si el valor de dispatchDate está dentro de (menos de) 1 hora a partir de ahora, hay algunas formas de hacerlo que son bastante simples.

El método más simple probablemente sería (actualizado según el comentario de RobG :

 return new Date() - sendDate.getTime() >= 3600000;

Dependiendo de si necesita o no flexibilidad adicional, también puede obtener el tiempo restante de diferentes formas y decidir qué hacer a partir de ahí:

 // OPTIONS const hoursBeforeSendout = 1; // END OF OPTIONS if(!entity.dispatchDate) { return false; } var sendDate = new Date(Date.parse(entity.dispatchDate)); let _TimeRemaining = function(d) { let timeRemaining = Math.floor((d.getTime() - new Date().getTime()) / 1000); return {"hours": Math.floor(timeRemaining / 60 / 60), "minutes": Math.floor(timeRemaining / 60), "seconds": timeRemaining} } console.log(_TimeRemaining(sendDate)["hours"]); // returns the hours remaining console.log(_TimeRemaining(sendDate)["minutes"]); // returns the minutes remaining console.log(_TimeRemaining(sendDate)["seconds"]); // returns the seconds remaining return _TimeRemaining(sendDate)["hours"] <= 0; // returns true if less than 1 hour

about 4 years ago · Juan Pablo Isaza 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!