如何比较日期字符串?

时间:2018-11-27 13:20:37

标签: javascript typescript date

我需要检查日期是否在 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);

预先感谢

4 个答案:

答案 0 :(得分:2)

使用moment.js

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;
}