Javascript 来自屏蔽输入文本的无效日期
我试图用moment js验证生日,但我做不到。 我正在使用这个代码:Javascript 来自屏蔽输入文本的无效日期,javascript,date,momentjs,Javascript,Date,Momentjs,我试图用moment js验证生日,但我做不到。 我正在使用这个代码: dateIsBefore(date) { return moment(date, 'DD/MM/YYYY').isBefore(moment().format('DD/MM/YYYY')); } 这是我的屏蔽输入元素: <el-input class="date-input" type="tel"
dateIsBefore(date) {
return moment(date, 'DD/MM/YYYY').isBefore(moment().format('DD/MM/YYYY'));
}
这是我的屏蔽输入元素:
<el-input
class="date-input"
type="tel"
v-mask="'##/##/####'"
placeholder="dd/mm/aaaa"
></el-input>
但当我期望一个真值时,它会返回一个假值。对象表示日期无效的那一刻
我从格式为“28/04/1990”的输入文本(是一个隐藏的输入日期)中获取日期。我怀疑问题出在这里:
dateIsBefore(date) {
return moment(date, 'DD/MM/YYYY').isBefore(moment().format('DD/MM/YYYY'));
// --------------------------------------------------^^^^^^^^^^^^^^^^^^^^^
}
您已经有了一个时刻(来自Moment()
),只需直接使用它,不要将其转换为字符串:
dateIsBefore(date) {
return moment(date, 'DD/MM/YYYY').isBefore(moment());
}
这显然更有意义,我认为它可能解决您的问题的原因是,如果您将字符串传递到isBefore
,则矩必须解析该字符串。在不知道格式的情况下,面对##/##/#####
格式的字符串,几乎肯定会使用(有点奇怪的)美国格式,即MM/DD/YYYY
,因为浏览器在面对这种字符串时(即使在美国以外)也会这样做
传递一个时刻意味着您不必担心这一点。这是因为方法dateIsBefore的输入参数的格式是DD-MM-yyyyy这不是有效的日期格式。您的日期格式应该是MM-DD-YYYY,并且您不想格式化时刻函数 将此方法用于日期格式“DD-MM-YYYY”
function dateIsBefore(date) {
const dateInput=date.split('-') //use this line of code the input is in the format
of 'DD-MM-YYYY'
return moment(`${dateInput[1]}-${dateInput[0]}-${dateInput[2]}`).isBefore(moment());
}
既然您已经有时间了,为什么要将字符串传递到isBefore
?