我需要检查日期是否在 minDate 和 maxDate 之间。 但是,当我尝试与minDate进行比较时,我应该得到有效的false值,但是却是true。
let minDate = "27-05-2019";
let maxDate = "27-05-2019";
let date = "13-02-2018";
var valid;
if(new Date(date.replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3")).toDateString() >= new Date(minDate.replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3")).toDateString()){
valid = true;
} else {
valid = false;
}
console.log(valid);
预先感谢
答案 0 :(得分:2)
isBetween-link
moment().isBetween(moment-like, moment-like);
示例
let minDate = "27-05-2019";
let maxDate = "27-05-2019";
let date = "13-02-2018";
moment(date).isBetween(moment(minDate), moment(maxDate));
答案 1 :(得分:2)
具有一些辅助功能的普通JS解决方案:
std::function<bool()> isSet
请注意,不保证Date构造函数可以接受ISO 8601格式的可接受的字符串。因此,我们在这里传递integers instead。另外请注意,我们必须从月份中减去1,因为JS月份是0-11,而不是1-12。
答案 2 :(得分:1)
使用toDateString()
方法时,会将Date
对象转换为字符串,因此,您只比较if
中的两个字符串。
删除此方法调用,它应该可以工作。
let minDate = "27-05-2019";
let maxDate = "27-05-2019";
let date = "13-02-2018";
var valid;
if (new Date(date.replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3")) >= new Date(minDate.replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))) {
valid = true;
} else {
valid = false;
}
console.log(valid);
答案 3 :(得分:1)
您可以使用JavaScript Date方法:https://www.w3schools.com/js/js_date_methods.asp
let minDate = new Date("2018-01-13"),
maxDate = new Date("2018-03-13"),
date = new Date("2018-02-13"),
valid = false;
if (date.getTime() >= minDate.getTime() && date.getTime() <= maxDate.getTime()) {
valid = true;
}