ค้นหาเว็บไซต์

javascript - ตรวจสอบว่าที่วันที่น้อยกว่า 1 ชั่วโมงที่ผ่านมาไหม?


มีวิธีตรวจสอบไหมว่ามีวันที่เกิดขึ้นน้อยกว่า 1 ชั่วโมงที่แล้วแบบนี้?

// 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");
}

อีกอย่าง คำถามหนึ่งต่างออกไป - มีวิธีเพิ่มชั่วโมงให้กับวันที่แบบนี้ไหม?

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

คำตอบ #1

กำหนด

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

แล้วคุณก็สามารถทำได้

((new Date) - myDate) < ONE_HOUR

เพื่อให้ได้หนึ่งชั่วโมงจากวันที่ ให้ลอง

new Date(myDate.getTime() + ONE_HOUR)                       

คำตอบ #2

ใช้ไวยากรณ์ ES6 บางส่วน:

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

    return date > anHourAgo;
}

การใช้ไลบรารี Moment:

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

ไวยากรณ์ย่อด้วย Moment:

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

คำตอบ #3

ไลบรารี moment สามารถช่วยในการแสดงออกเรื่องนี้ได้จริงๆ เคล็ดลับคือการเอาวันที่ เพิ่มเวลา และดูว่ามันอยู่ก่อนหรือหลังตอนนี้:

  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!
  },

บทความที่เกี่ยวข้อง