首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于如何将日期输入值与最小/最大日期范围进行比较的建议

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

Stack Overflow用户
提问于 2013-12-14 19:46:28
回答 3查看 1.7K关注 0票数 0

我已经设置了一个jQuery数据报警器,它接受出生日期,并希望使用选定的日期输出特定的类别,比较输入的日期与每个类别的最小和最大日期。目前,我在比较日期的时候遇到了问题,我希望能得到一些建议。我现在知道我的问题是因为我试图比较一个字符串和一个字符串,但是我想知道是将每个日期转换成一个类似unix值的东西来进行比较,还是在我的每个ageLimits上都应该使用一些ageLimits

JS

代码语言:javascript
复制
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');
    }    
}

JSFiddle:http://jsfiddle.net/qA9NT/5/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-14 19:58:57

我看你已经在使用moment了。

您可以使用moment解析日期字符串,并使用toDate从瞬间实例中获取本机日期对象。然后,您可以自然地比较本地Date对象。

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

注意,如果硬编码ageLimits对象,可以立即构造date对象,而不是存储字符串。

代码语言:javascript
复制
var date1 = moment("12-25-1995", "MM-DD-YYYY").toDate(),
    date2 = moment("12-25-1996", "MM-DD-YYYY").toDate();

if (date1 < date2) console.log('first date is smaller');

FIDDLE

票数 1
EN

Stack Overflow用户

发布于 2013-12-14 19:50:59

使用Date对象而不是字符串。

可以使用以下方法获取Date对象

代码语言:javascript
复制
dateInput._d
票数 1
EN

Stack Overflow用户

发布于 2013-12-14 20:03:34

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

代码语言:javascript
复制
var yearsAgo=10

var d=new Date();
d.setYear( d.getFullYear() - yearsAgo) ;

不需要对测试日期进行任何硬编码,并且将始终从今天的日期计算

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20587494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档