JS: Überprüfen Sie, ob das Datum weniger als 1 Stunde zurückliegt?

95

Gibt es eine Möglichkeit zu überprüfen, ob ein Datum weniger als 1 Stunde zurückliegt?

Etwas wie das:

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

Auch eine andere Frage: Gibt es eine Möglichkeit, einem Datum Stunden hinzuzufügen?

So was:

<script>
var olddate = new Date("February 9, 2012, 12:15") + 15 HOURS; // output: February 10, 2012, 3:15
</script>
Supercoolville
quelle
Ihre zweite Frage ist ein mögliches Duplikat von stackoverflow.com/questions/1050720/…
Pbirkoff

Antworten:

155

Definieren

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

dann kannst du tun

((new Date) - myDate) < ONE_HOUR

Versuchen Sie es, um eine Stunde von einem Datum zu erhalten

new Date(myDate.getTime() + ONE_HOUR)                       
Mike Samuel
quelle
Akzeptiert dies nicht auch Daten, die vor der vollen Stunde liegen? (dh ein negatives Differential)
information_interchange
1
@information_interchange, ja. Wenn n Stunden vor -n Stunden mit -n Stunden in der Zukunft übereinstimmen, liegen alle zukünftigen Daten vor weniger als einer Stunde.
Mike Samuel
51

Verwenden einer ES6-Syntax:

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

    return date > anHourAgo;
}

Verwenden der Moment- Bibliothek:

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

Kurzsyntax mit Moment :

const lessThanOneHourAgo = (date) => moment(date).isAfter(moment().subtract(1, 'hours'));
Gorka Hernandez
quelle
Dies funktioniert auch mit dayjs . const lessThanOneHourAgo = (date) => { return dayjs(date).isAfter(dayjs().subtract(1, 'hours')); };
Turrican_34
Das war ziemlich nah an dem, was ich brauchte. Das war vor mehr als XHours, also habe ich gerade isBefore anstelle von isAfter hinzugefügt!
Urasquirrel
9

Die Momentbibliothek kann wirklich helfen, dies auszudrücken. Der Trick besteht darin, das Datum zu erfassen, die Zeit hinzuzufügen und zu prüfen, ob es vorher oder nachher ist:

  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!
  },
Michael Cole
quelle
2
//for adding hours to a date
Date.prototype.addHours= function(hrs){
    this.setHours(this.getHours()+hrs);
    return this;
}

Aufruffunktion wie folgt:

//test alert(new Date().addHours(4));
Krishna N.
quelle
2

Die Verwendung von moment wird in diesem Fall viel einfacher. Sie können dies versuchen:

    let hours = moment().diff(moment(yourDateString), 'hours');

Sie erhalten einen ganzzahligen Wert wie 1,2,5,0etc, sodass Sie die Bedingungsprüfung wie folgt problemlos verwenden können:

if(hours < 1) {

Eine weitere Sache ist, dass Sie ein genaueres Ergebnis der Zeitdifferenz erhalten können (in Dezimalstellen wie 1.2,1.5,0.7etc), um diese Art von Ergebnis zu erhalten, indem Sie diese Syntax verwenden:

let hours = moment().diff(moment(yourDateString), 'hours', true);

Lassen Sie mich wissen, wenn Sie weitere Fragen haben

Umang Loriya
quelle
0

Sie können dies wie folgt tun:

  1. Finden Sie zuerst die Differenz zweier Daten, dh in Millisekunden
  2. Millisekunden in Minuten umrechnen
  3. Wenn die Minuten weniger als 60 sind, bedeutet dies, dass das Datum innerhalb einer Stunde liegt, andernfalls nicht innerhalb einer Stunde.
var date = new Date("2020-07-12 11:30:10");
var now = new Date();
var diffInMS = now - date;
var msInHour = Math.floor(diffInMS/1000/60);
if (msInHour < 60) {
    console.log('Within hour');
} else {
    console.log('Not within the hour');
}
Tanzeem Bhatti
quelle
-2

// versuche dies: // um zwei Daten zu vergleichen:

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

Hoffe es wird funktionieren 4 u ...

Krishna N.
quelle