簡體   English   中英

有關如何將日期輸入值與最小/最大日期范圍進行比較的建議

[英]Advice on how to compare a date input value against min/max date ranges

我已經設置了一個jQuery日期選擇器,它接受一個出生日期,並希望使用選擇的日期來輸出特定類別,該類別將輸入的日期與每個類別的最小和最大日期進行比較。 目前,我在比較日期時遇到了問題,希望能得到一些建議。 我現在知道我的問題是因為我正在嘗試比較一個字符串和一個字符串,但是我想知道是否應該將每個日期都轉換為類似unix的值以進行比較,或者是否存在一些Date()我應該在每個ageLimits

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

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

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

您可以使用以下方法獲取Date對象

dateInput._d

我看到你已經在用moment

您可以使用moment解析日期字符串,並使用toDate從moment實例獲取一個本地日期對象。 然后,您可以自然地比較本地Date對象。

本機的Date構造函數已經可以解析某些格式,因此您甚至不需要使用moment進行解析。

請注意,如果您要對ageLimits對象進行硬編碼,則可以立即構造日期對象,而不是存儲字符串。

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');

小提琴

我不確定您的日期標准是什么,但是如果嚴格基於年份,則可以使用以下命令獲取過去的確切日期:

var yearsAgo=10

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

不需要對考試日期進行任何硬編碼,並且總是從今天的日期開始計算

然后可以直接比較日期對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM