2012-02-10 12 views
60

¿Hay alguna forma de verificar si una fecha es anterior a 1 hora?JS: ¿Verificar si la fecha es menos de 1 hora?

Algo como esto:

<script> 
// old date 
var olddate = new Date("February 9, 2012, 12:15"); 

// current date 
var currentdate = new Date(); 

if (olddate >= currentdate - 1 hour) { 
    alert("newer than 1 hour"); 
else { 
    alert("older than 1 hour"); 
} 
</script> 

Además, pregunta diferente - ¿Existe una manera de agregar horas a una fecha?

De esta manera:

<script> 
var olddate = new Date("February 9, 2012, 12:15") + 15 HOURS; // output: February 10, 2012, 3:15 
</script> 
+0

su segunda pregunta es un posible duplicado de http://stackoverflow.com/questions/1050720/adding-hours-to-javascript-date-object – Pbirkoff

Respuesta

104

Definir

var ONE_HOUR = 60 * 60 * 1000; /* ms */ 

entonces puede hacer

((new Date) - myDate) < ONE_HOUR 

Para llegar a una hora de una fecha, tratan

new Date(myDate.getTime() + ONE_HOUR)      
3
//for adding hours to a date 
Date.prototype.addHours= function(hrs){ 
    this.setHours(this.getHours()+hrs); 
    return this; 
} 

función Llamada así:

//test alert(new Date().addHours(4)); 
1

// Prueba esto: // para comparar dos de fecha:

<Script Language=Javascript> 
function CompareDates() 
{ 
    var str1 = document.getElementById("Fromdate").value; 
    var str2 = document.getElementById("Todate").value; 
    var dt1 = parseInt(str1.substring(0,2),10); 
    var mon1 = parseInt(str1.substring(3,5),10); 
    var yr1 = parseInt(str1.substring(6,10),10); 
    var dt2 = parseInt(str2.substring(0,2),10); 
    var mon2 = parseInt(str2.substring(3,5),10); 
    var yr2 = parseInt(str2.substring(6,10),10); 
    var date1 = new Date(yr1, mon1, dt1); 
    var date2 = new Date(yr2, mon2, dt2); 

    if(date2 < date1) 
    { 
     alert("To date cannot be greater than from date"); 
     return false; 
    } 
    else 
    { 
     alert("Submitting ..."); 
    } 
} 

</Script> 

esperanza de que va a funcionar 4 u ...

8

el moment library realmente puede ayudar a expresar esto. El truco es tomar la fecha, añadir el tiempo, y ver si es antes o después de ahora:

lastSeenAgoLabel: function() { 
    var d = this.lastLogin(); 
    if (! moment(d).isValid()) return 'danger'; // danger if not a date. 
    if (moment(d).add(10, 'minutes').isBefore(/*now*/)) return 'danger'; // danger if older than 10 mins 
    if (moment(d).add(5, 'minutes').isBefore(/*now*/)) return 'warning'; // warning if older than 5mins 
    return 'success'; // Looks good! 
    }, 
8

El uso de una sintaxis ES6:

const lessThanOneHourAgo = (date) => { 
    const HOUR = 1000 * 60 * 60; 
    let anHourAgo = Date.now() - HOUR; 

    return date > anHourAgo; 
} 

El uso de la biblioteca Momento:

const lessThanOneHourAgo = (date) => { 
    return moment(date).isAfter(moment().subtract(1, 'hours')); 
} 
Cuestiones relacionadas