【问题标题】:Check if date is less than 1 hour ago?检查日期是否小于 1 小时前?
【发布时间】:2012-03-02 17:52:30
【问题描述】:

有没有办法像这样检查日期是否小于 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

【问题讨论】:

标签: javascript datetime


【解决方案1】:

定义

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

那你就可以了

((new Date) - myDate) < ONE_HOUR

要从约会中获得一小时,请尝试

new Date(myDate.getTime() + ONE_HOUR)                       

【讨论】:

  • 这不也接受小时之前的日期吗? (即负差异)
  • @information_interchange,是的。如果 n 小时前与未来的 -n 小时相同,则所有未来日期都小于一小时前。
【解决方案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'));

【讨论】:

  • 这也适用于dayjsconst lessThanOneHourAgo = (date) =&gt; { return dayjs(date).isAfter(dayjs().subtract(1, 'hours')); };
  • 这非常接近我的需要。这是 moreThanXHours 之前的,所以我只是添加了 isBefore 而不是 isAfter!
【解决方案3】:

moment library 确实可以帮助表达这一点。诀窍是取日期,加上时间,然后看看是现在之前还是之后:

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

【讨论】:

    【解决方案4】:

    在这种情况下使用 moment 会容易得多,你可以试试这个:

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

    它将为您提供整数值,例如 1、2、5、0 等,因此您可以轻松地使用条件检查,例如:

    if(hours < 1) {
    

    另外,还有一件事是您可以获得更准确的时间差结果(以十进制形式,如 1.2、1.5、0.7 等)来获得这种结果,请使用以下语法:

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

    如果您有任何疑问,请告诉我

    【讨论】:

      【解决方案5】:
      //for adding hours to a date
      Date.prototype.addHours= function(hrs){
          this.setHours(this.getHours()+hrs);
          return this;
      }
      

      这样调用函数:

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

      【讨论】:

        【解决方案6】:

        你可以这样做:

        1. 首先找出两个日期的差异,即毫秒数
        2. 将毫秒转换为分钟
        3. 如果分钟小于 60,则表示日期在小时内,否则不在小时内。
        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');
        }
        

        【讨论】:

          【解决方案7】:

          //试试这个: // 比较两个日期:

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

          希望它会在 4 小时内工作......

          【讨论】:

            猜你喜欢
            • 2012-02-24
            • 1970-01-01
            • 2023-03-19
            • 2021-07-12
            • 1970-01-01
            • 2022-11-23
            • 1970-01-01
            • 2021-08-27
            • 1970-01-01
            相关资源
            最近更新 更多