我试图使用momentjs来检查给定的日期是今天还是将来。

这是我目前所拥有的:

<script type="text/javascript" src="http://momentjs.com/downloads/moment.min.js"></script>
<script type="text/javascript">

var SpecialToDate = '31/01/2014'; // DD/MM/YYYY

var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment().diff(SpecialTo) > 0) {
    alert('date is today or in future');
} else {
    alert('date is in the past');
}

</script>

代码评估我的日期(2014年1月31日)作为过去的日期。

知道我哪里做错了吗?


当前回答

function isTodayOrFuture(date){
  date = stripTime(date);
  return date.diff(stripTime(moment.now())) >= 0;
}

function stripTime(date){
  date = moment(date);
  date.hours(0);
  date.minutes(0);
  date.seconds(0);
  date.milliseconds(0);
  return date;
}

然后用它来换行

isTodayOrFuture(YOUR_TEST_DATE_HERE)

其他回答

检查以下内容:

let isContinue = moment().diff('2020-04-04T20:06:11+05:30')/1000

它几秒钟后就回来了。

如果将检查为2分钟状态则

if (isContinue < 120) {
  ..To check otp details or further logic
} else {
   // otp is getting invalid
}

invert is before方法检查日期是否与今天或未来相同,如下所示:

!moment(yourDate).isBefore(moment(), "day");
function isTodayOrFuture(date){
  date = stripTime(date);
  return date.diff(stripTime(moment.now())) >= 0;
}

function stripTime(date){
  date = moment(date);
  date.hours(0);
  date.minutes(0);
  date.seconds(0);
  date.milliseconds(0);
  return date;
}

然后用它来换行

isTodayOrFuture(YOUR_TEST_DATE_HERE)

最简单的答案是:

const firstDate = moment('2020/10/14'); // the date to be checked
const secondDate = moment('2020/10/15'); // the date to be checked

firstDate.startOf('day').diff(secondDate.startOf('day'), 'days'); // result = -1
secondDate.startOf('day').diff(firstDate.startOf('day'), 'days'); // result = 1

它将检查midnight值并返回准确的结果。当两个日期之间的时间差小于24小时时,它也会工作。

我编写了函数来检查Moment类型的日期是否是已经过的日期,作为函数和自描述函数。 也许它可以帮助别人。

函数isItBeforeToday(时刻日期:时刻){ MomentDate返回。diff(moment(0, 'HH')) < 0; } 函数isItAfterToday(时刻日期:时刻){ MomentDate返回。diff(moment(0, 'HH')) > 0; }