我正在尝试验证一个字段是否有今天之前的日期。我正在使用 MomentJS 和以下功能:
- 是有效日期,我正在使用
isValid()
- 与今天或之后相同,我正在使用
isSameOrAfter()
我是这样做的:
$("#btn").click(function(){
const value = moment(new Date($('#field').val()), 'MM/DD/YYYY', true)
console.log(value)
//console.log(value.isValid() && value.isSameOrAfter(moment(new Date(), 'MM/DD/YYYY')))
//console.log(value.isValid() && value.isSameOrAfter(moment()))
console.log(value.isValid() && value.isSameOrAfter(moment(new Date())))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<input type="text" name="field" id="field" />
<button id="btn">Click Me</button>
我不确定我在这里可能会遗漏什么,但正如您所看到的那样不起作用,我尝试了三种不同的方法(对上面的代码片段进行了评论)。
我注意到的一件事是 moment()
对象返回时区格式的日期:2018-08-10T04:00:00.000Z
这可能是打破验证?
我在这里缺少什么?
最佳答案
您可以通过将粒度单位指定为第二个参数来指定moment#isSameOrAfter
的粒度:
const value = moment(new Date($('#field').val()), 'MM/DD/YYYY', true)
console.log(value.isValid() && value.isSameOrAfter(moment(new Date()), 'day'));
接受的时间单位是:年
月
周
日
小时
分钟
秒
。如果不指定粒度,moment 将默认为毫秒。
关于javascript - 如何使用 MomentJS 正确检查日期是否相同或晚于今天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51787295/