Javascript Moment.js显示1天的未来日期警告和天错误>;1.

Javascript Moment.js显示1天的未来日期警告和天错误>;1.,javascript,momentjs,Javascript,Momentjs,我正在尝试显示错误和警告: 未来1天的日期应为警告 超过1天的未来日期应为错误 我认为我使用了错误的方法,无法实现我想要的。您可以简单地使用矩函数来确定通过的日期和当前日期 如果传递给函数的日期是明天,则它将显示警告-如果日期比今天提前2天,则它将显示错误消息 此外,正如您可能看到的,我使用的是一个缩写形式的if和else——这样我们可以减少我们编写的代码行,并获得相同的结果 现场演示:(我还为您添加了注释,以详细说明每一行代码) //这只是为了显示所有日期都在工作 让dataAttrTo

我正在尝试显示错误和警告:

  • 未来1天的日期应为警告
  • 超过1天的未来日期应为错误
我认为我使用了错误的方法,无法实现我想要的。

您可以简单地使用矩函数来确定通过的日期和当前日期

如果传递给函数的日期是明天,则它将显示警告-如果日期比今天提前2天,则它将显示错误消息

此外,正如您可能看到的,我使用的是一个缩写形式的
if
else
——这样我们可以减少我们编写的代码行,并获得相同的结果

现场演示:(我还为您添加了注释,以详细说明每一行代码)

//这只是为了显示所有日期都在工作
让dataAttrToday=moment().endOf('day')//今天的日期
让dataAttr1Days=时刻('11-08-2020','DD-MM-YYYY')。endOf('day')//1天前
让dataAttr2Days=时刻('12-08-2020','DD-MM-YYYY')。endOf('day')//提前2天
让dataAttr3Days=时刻('13-08-2020','DD-MM-YYYY')。endOf('day')//提前3天
//获取dats差异并返回消息
功能检查天数(日期){
让getDiff=moment().diff(日期,'days')//获取差异
return(getDiff==0)?“这是今天”:(getDiff==1)?“这是一个警告”:(getDiff==2)?“这是一个错误”:“这是一个错误”
}
console.log(“10-08-2020”+checkDays(dataAttrToday))//这是今天
console.log(“11-08-2020”+checkDays(dataAttr1Days))//这是一个警告
console.log(“12-08-2020”+checkDays(dataattr2day))//这是一个错误
console.log(“13-08-2020”+checkDays(dataattr2day))//这是一个错误

您的意思是如果某个日期大于今天,则应发出警告吗?如果是,代码中的日期在哪里?如果日期是明天,则应该是警告;如果日期是>明天,则应该是错误。再次说明:代码中的日期在哪里?你需要将日期与明天进行比较。你不能和明天相比,是吗?我更新了问题。日期可以是这样的。数据[attr]可以是10-08-2020,在这种情况下,如果明天是11.08.2020,那么应该是一个警告,否则如果超过11.08.2020应该是错误的我认为“今天”、“明天”和后天不应该硬编码。但除此之外,您的解决方案非常好。谢谢!OP将向函数
checkDays()
传递一个实际值-硬编码日期只是一个示例,为了回答这个问题,它将显示它的工作情况。@总是选择“是”,这个解决方案非常好。只是我想知道,如果我从日期选择器(10-08-2020)选择今天日期,那么警告从dt 13-08-2020开始显示,错误从14-08开始显示-2020@alar对不起,我没听懂你的话?你是说你收到了一条警告信息,日期是13-04和14-08?这意味着我在明天之后收到警告信息,而不是明天。而且我只收到一天的错误信息。
// date can be different (i.e 10-08-2020)
const date = data[attr]
if (date.isAfter(moment().endOf('day'))) {
        return "This should be an error;
    }

    if (moment().add('days', 1)) {
        return 'This should be a warning';
    }
var date = "11-08-2020"; //input date read from somewhere

var today     = moment().format("YYYYMMDD");

var tomorrow  = moment().add(1, 'days').format("YYYYMMDD");

var inputDate = moment(date, "DD-MM-YYYY").format("YYYYMMDD");

if ( inputDate > tomorrow ) {
    alert ("error");
} else if ( inputDate > today ) {
    alert ("warning")
}