我试图用来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>
Run Code Online (Sandbox Code Playgroud)
该代码正在评估我的日期(2014年1月31日)作为过去的日期.
知道我做错了什么吗?
Gre*_*olf 278
使用isSame函数
var iscurrentDate = startTime.isSame(new Date(), "day");
if(iscurrentDate) {
}
Run Code Online (Sandbox Code Playgroud)
Aur*_*iot 181
阅读文档后:http://momentjs.com/docs/#/displaying/difference/,您必须将diff函数视为减号运算符.
// today < future (31/01/2014)
today.diff(future) // today - future < 0
future.diff(today) // future - today > 0
Run Code Online (Sandbox Code Playgroud)
因此,你必须扭转你的状况.
如果要检查一切正常,可以在函数中添加一个额外的参数:
moment().diff(SpecialTo, 'days') // -8 (days)
Run Code Online (Sandbox Code Playgroud)
Aki*_*kis 139
// Returns true if it is today or false if it's not
moment(SpecialToDate).isSame(moment(), 'day');
Run Code Online (Sandbox Code Playgroud)
dba*_*sch 76
您可以使用isAfter()momentjs 的查询功能:
检查片刻是否在另一个时刻之后.
moment('2010-10-20').isAfter('2010-10-19'); // true
Run Code Online (Sandbox Code Playgroud)
如果要将粒度限制为毫秒以外的单位,请将单位作为第二个参数传递.
moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true
Run Code Online (Sandbox Code Playgroud)
http://momentjs.com/docs/#/query/is-after/
mpe*_*pen 65
由于似乎没有人提及它,检查Moment日期对象是否过去的最简单方法是:
momentObj.isBefore()
Run Code Online (Sandbox Code Playgroud)
或者将来:
momentObj.isAfter()
Run Code Online (Sandbox Code Playgroud)
只需将args留空即可 - 现在默认为.
还有isSameOrAfter和isSameOrBefore.
请注意这个因素.如果您只关心这一天,请参阅Dipendu的回答.
Dip*_*aul 11
反转isBefore方法,以检查日期是否与今天或将来相同,如下所示:
!moment(yourDate).isBefore(moment(), "day");
Run Code Online (Sandbox Code Playgroud)
要检查它是否是今天:
如果我们比较两个包含时间的日期,那么信息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
Run Code Online (Sandbox Code Playgroud)
我认为最好的方法,即使不是快而短,如下:
var isSame = date1.date() == date2.date() && date1.month() == date2.month() && date1.year() == date2.year()
Run Code Online (Sandbox Code Playgroud)
检查它是否在将来:
正如其他用户所建议的那样,该diff方法也有效.
var isFuture = now.diff(anotherDate) < 0
Run Code Online (Sandbox Code Playgroud)
以防万一其他人需要这样做,请执行以下操作:
const isToday = moment(0, "HH").diff(date, "days") == 0;
Run Code Online (Sandbox Code Playgroud)
或者如果您想要一个功能:
isToday = date => moment(0,"HH").diff(date, "days") == 0;
Run Code Online (Sandbox Code Playgroud)
当日期是要检查的日期。
说明
moment(0, "HH") 返回今天的午夜。
date1.diff(date2, "days") 返回date1和date2之间的天数。
更新资料
此后,我发现了isSame函数,我相信它是用于确定日期是否为今天的正确函数:
const isToday = moment(0, "HH").diff(date, "days") == 0;
Run Code Online (Sandbox Code Playgroud)
如果您只需要知道哪一个更大,您也可以直接比较它们:
var SpecialToDate = '31/01/2014'; // DD/MM/YYYY
var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment() > SpecialTo) {
alert('date is today or in future');
} else {
alert('date is in the past');
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
使用最简单的一个来检查未来的日期
if(moment().diff(yourDate) >= 0)
alert ("Past or current date");
else
alert("It is a future date");
Run Code Online (Sandbox Code Playgroud)
小智 5
我编写了一些函数来检查 Moment 类型的日期是否是过去的一天,作为功能性和自描述性函数。也许可以帮助某人。
function isItBeforeToday(MomentDate: Moment) {
return MomentDate.diff(moment(0, 'HH')) < 0;
}
function isItAfterToday(MomentDate: Moment) {
return MomentDate.diff(moment(0, 'HH')) > 0;
}Run Code Online (Sandbox Code Playgroud)