![](/img/trans.png)
[英]How to assign date ranges to arrays and compare against date input data
[英]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.