2012-02-10 6 views
60

C'è un modo per verificare se una data è inferiore a 1 ora fa?JS: controllare se la data è inferiore a 1 ora fa?

Qualcosa di simile a questo:

<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> 

Inoltre, questione diversa - c'è un modo per aggiungere ore per una data?

Ti piace questa:

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

la seconda domanda è un possibile duplicato di http://stackoverflow.com/questions/1050720/adding-hours-to-javascript-date-object – Pbirkoff

risposta

104

Definire

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

allora si può fare

((new Date) - myDate) < ONE_HOUR 

Per ottenere un'ora da una data, provare

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; 
} 

chiamata di funzione come questa:

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

// provare questo: // per confrontare due di data:

<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> 

spero che funzionerà 4 u ...

8

il moment library può davvero aiutare a esprimere questo. Il trucco è quello di prendere la data, aggiungere il tempo, e vedere se è prima o dopo ora:

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

Utilizzando alcuni ES6 sintassi:

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

    return date > anHourAgo; 
} 

Utilizzando la libreria Moment:

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