我试图使用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日)作为过去的日期。

知道我哪里做错了吗?


当前回答

如果我们想要没有时间的差异,你可以得到不同的日期(只有日期没有时间),如下所示,使用时刻的格式。

因为,我在做的时候遇到了不同的问题;

moment().diff([YOUR DATE])

于是,我想到了下面这些;

const dateValidate = moment(moment().format('YYYY-MM-DD'))。diff(moment([你选择的日期]).format('YYYY-MM-DD'))

IF dateValidate > 0 
   //it's past day
else
   //it's current or future

如果有什么需要改进的地方,请随时评论。

谢谢,

其他回答

更新

moment().isSame('2010-02-01', 'day'); // Return true if we are the 2010-02-01

我后来发现了isSame函数,我认为这是用于确定日期是否为今天的正确函数。

原来的答案

以防别人需要,就这么做:

const isToday = moment(0, "HH").diff(date, "days") == 0;

或者如果你想要一个函数:

isToday = date => moment(0,"HH").diff(date, "days") == 0;

date是要检查的日期。

解释

moment(0,“HH”)在午夜返回今天的日期。

date1。Diff (date2, "days")返回date1和date2之间的天数。

检查以下内容:

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
}

如果我们想要没有时间的差异,你可以得到不同的日期(只有日期没有时间),如下所示,使用时刻的格式。

因为,我在做的时候遇到了不同的问题;

moment().diff([YOUR DATE])

于是,我想到了下面这些;

const dateValidate = moment(moment().format('YYYY-MM-DD'))。diff(moment([你选择的日期]).format('YYYY-MM-DD'))

IF dateValidate > 0 
   //it's past day
else
   //it's current or future

如果有什么需要改进的地方,请随时评论。

谢谢,

要查看今天是否有:

如果我们比较两个同时包含时间信息的日期,那么isSame显然会失败。如果两个日期跨越了新的一天,Diff将失败:

var date1 = moment("01.01.2016 23:59:00", "DD.MM.YYYY HH.mm.ss");
var date2 = moment("02.01.2016 00:01:00", "DD.MM.YYYY HH.mm.ss");
var diff = date2.diff(date1); // 2seconds

我认为最好的方法,即使它不是快速和简短的,是以下:

var isSame = date1.date() == date2.date() && date1.month() == date2.month() && date1.year() == date2.year()

检查它是否在将来:

正如其他用户所建议的那样,diff方法是有效的。

var isFuture = now.diff(anotherDate) < 0 

选择yesterday,在moment()的帮助下检查过去的天数。减去(1天);

Reference:- http://momentjs.com/docs/#/manipulating/subtract/ function myFunction() { var yesterday = moment().subtract(1, "day").format("YYYY-MM-DD"); var SpecialToDate = document.getElementById("theDate").value; if (moment(SpecialToDate, "YYYY-MM-DD", true).isAfter(yesterday)) { alert("date is today or in future"); console.log("date is today or in future"); } else { alert("date is in the past"); console.log("date is in the past"); } } <script src="http://momentjs.com/downloads/moment.js"></script> <input type="date" id="theDate" onchange="myFunction()">