Javascript 关于如何将日期输入值与最小/最大日期范围进行比较的建议

Javascript 关于如何将日期输入值与最小/最大日期范围进行比较的建议,javascript,jquery,date,Javascript,Jquery,Date,我已经设置了一个jQuery datepicker,它接受出生日期,并希望使用选择的日期输出特定类别,将输入的日期与每个类别的最小和最大日期进行比较。目前,我在比较日期时遇到了问题,希望能得到一些建议。我知道现在我的问题是因为我试图比较一个字符串和一个字符串,但我想知道我是应该将每个日期转换为类似unix值的值来进行比较,还是应该在每个年龄限制上使用一些Date() JS var ageLimits = { 'under10': { 'minAge': '06-05-20

我已经设置了一个jQuery datepicker,它接受出生日期,并希望使用选择的日期输出特定类别,将输入的日期与每个类别的最小和最大日期进行比较。目前,我在比较日期时遇到了问题,希望能得到一些建议。我知道现在我的问题是因为我试图比较一个字符串和一个字符串,但我想知道我是应该将每个日期转换为类似unix值的值来进行比较,还是应该在每个
年龄限制上使用一些
Date()

JS

var ageLimits = {
    'under10': {
        'minAge': '06-05-2005',
        'maxAge': '07-04-2004'
    },
    'under13': {
        'minAge': '08-04-2003',
        'maxAge': '15-08-2001'
    },
    'under15': {
        'minAge': '16-08-2000',
        'maxAge': '07-12-1999'
    }
}
function getUserDate(val) {

    dateInput = moment( $('#datepicker').val(), 'MM-DD-YYYY');   

    //pass full date to selectAgeCategory
    selectAgeCategory( dateInput.format('MM-DD-YYYY') );

}

function selectAgeCategory(date) {
      console.log(date);

    if( date >= ageLimits.under10.minAge && date <= ageLimits.under10.maxAge ) {
        console.log('Under 10 category');
    } else if ( date >= ageLimits.under13.minAge && date <= ageLimits.under13.maxAge ) {
        console.log('Under 13 category');
    } else if ( date >= ageLimits.under15.minAge && date <= ageLimits.under15.maxAge ) {
        console.log('Under 15 category');
    } else {
        console.log('No category available for this age');
    }    
}
var年龄限制={
‘10岁以下人士’:{
“米纳奇”:“06-05-2005”,
‘maxAge’:‘07-04-2004’
},
‘13岁以下人士’:{
“米纳奇”:“08-04-2003”,
“maxAge”:“15-08-2001”
},
‘15岁以下人士’:{
“米纳奇”:“16-08-2000”,
‘maxAge’:‘07-12-1999’
}
}
函数getUserDate(val){
dateInput=力矩($(“#日期选择器”).val(),“MM-DD-YYYY”);
//将完整日期传递给selectAgeCategory
选择日期类别(dateInput.format('MM-DD-YYYY');
}
功能选择类别(日期){
控制台日志(日期);

如果(日期>=ageLimits.under10.minAge&&date=ageLimits.under13.minAge&&date=ageLimits.under15.minAge&&date使用
date
对象而不是字符串

您可以使用

dateInput._d

使用
Date
对象而不是字符串

您可以使用

dateInput._d

使用
Date
对象而不是字符串

您可以使用

dateInput._d

使用
Date
对象而不是字符串

您可以使用

dateInput._d

我看到您已经在使用
moment

您可以使用
解析日期字符串,并使用矩实例获取本机日期对象。然后您可以自然地比较本机
日期
对象

本机构造函数已经可以解析某些格式,因此您甚至不需要使用
moment
进行解析

请注意,如果要硬编码
ageLimits
对象,则可以立即构造日期对象,而不是存储字符串

var date1=力矩(“12-25-1995”,“MM-DD-YYYY”).toDate(),
日期2=力矩(“1996年12月25日”,“年月日”)。toDate();
if(date1

我看到您已经在使用
时刻了

您可以使用
解析日期字符串,并使用矩实例获取本机日期对象。然后您可以自然地比较本机
日期
对象

本机构造函数已经可以解析某些格式,因此您甚至不需要使用
moment
进行解析

请注意,如果要硬编码
ageLimits
对象,则可以立即构造日期对象,而不是存储字符串

var date1=力矩(“12-25-1995”,“MM-DD-YYYY”).toDate(),
日期2=力矩(“1996年12月25日”,“年月日”)。toDate();
if(date1

我看到您已经在使用
时刻了

您可以使用
解析日期字符串,并使用矩实例获取本机日期对象。然后您可以自然地比较本机
日期
对象

本机构造函数已经可以解析某些格式,因此您甚至不需要使用
moment
进行解析

请注意,如果要硬编码
ageLimits
对象,则可以立即构造日期对象,而不是存储字符串

var date1=力矩(“12-25-1995”,“MM-DD-YYYY”).toDate(),
日期2=力矩(“1996年12月25日”,“年月日”)。toDate();
if(date1

我看到您已经在使用
时刻了

您可以使用
解析日期字符串,并使用矩实例获取本机日期对象。然后您可以自然地比较本机
日期
对象

本机构造函数已经可以解析某些格式,因此您甚至不需要使用
moment
进行解析

请注意,如果要硬编码
ageLimits
对象,则可以立即构造日期对象,而不是存储字符串

var date1=力矩(“12-25-1995”,“MM-DD-YYYY”).toDate(),
日期2=力矩(“1996年12月25日”,“年月日”)。toDate();
if(date1

我不确定您的日期标准是什么,但如果严格按照年份计算,您可以使用以下方法获得过去的确切日期:

var yearsAgo=10

var d=new Date();
d.setYear( d.getFullYear() - yearsAgo) ;
不需要对考试日期进行任何硬编码,并且将始终从今天开始计算


然后可以直接比较日期对象

我不确定您的日期标准是什么,但如果严格基于年份,您可以使用以下方法获得过去的确切日期:

var yearsAgo=10

var d=new Date();
d.setYear( d.getFullYear() - yearsAgo) ;
不需要对考试日期进行任何硬编码,并且将始终从今天开始计算


然后可以直接比较日期对象

我不确定您的日期标准是什么,但如果严格基于年份,您可以使用以下方法获得过去的确切日期:

var yearsAgo=10

var d=new Date();
d.setYear( d.getFullYear() - yearsAgo) ;
不需要对考试日期进行任何硬编码,并且将始终从今天开始计算


然后可以直接比较日期对象

我不确定您的日期标准是什么,但如果严格基于年份,您可以使用以下方法获得过去的确切日期:

var yearsAgo=10

var d=new Date();
d.setYear( d.getFullYear() - yearsAgo) ;
不需要对考试日期进行任何硬编码,并且将始终从今天开始计算


然后可以直接比较日期对象

停止存储和比较日期,如stringsHey@ryan是的,我意识到这是个问题,但我现在应该做什么来解决这个问题?停止存储和比较