JS:检查日期是否少于1小时?

sup*_*lle 82 javascript

有没有办法检查日期是否少于1小时?

像这样的东西:

<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>
Run Code Online (Sandbox Code Playgroud)

另外,不同的问题 - 是否有办法增加约会时间?

像这样:

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

Mik*_*uel 138

限定

var ONE_HOUR = 60 * 60 * 1000; /* ms */
Run Code Online (Sandbox Code Playgroud)

那么你可以做到

((new Date) - myDate) < ONE_HOUR
Run Code Online (Sandbox Code Playgroud)

要从约会开始一小时,请尝试

new Date(myDate.getTime() + ONE_HOUR)                       
Run Code Online (Sandbox Code Playgroud)


Gor*_*dez 36

使用一些ES6语法:

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

    return date > anHourAgo;
}
Run Code Online (Sandbox Code Playgroud)

使用Moment库:

const lessThanOneHourAgo = (date) => {
    return moment(date).isAfter(moment().subtract(1, 'hours'));
}
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于 [dayjs](https://github.com/iamkun/dayjs)。`const lessThanOneHourAgo = (date) =&gt; { return dayjs(date).isAfter(dayjs().subtract(1, '小时')); };` (2认同)

Mic*_*ole 9

一刻图书馆可以真正帮助表达这一点.诀窍是采取日期,添加时间,看看它是在现在之前或之后:

  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!
  },
Run Code Online (Sandbox Code Playgroud)