2015-08-28 42 views
0

需要獲得最佳方法獲得正確輸出狀態的幫助。 我正在寫一個函數purchaseDateChecker,它從用戶輸入中輸出正確的狀態,該用戶輸入位於特定的日期範圍之間。我沒有得到某些輸出(狀態),所以想知道這是比較幾天,幾個月還是一年中的正確方法。如何比較幾天或幾個月或一年的時間jS

所以基本上要達到這樣的 - 如果日期是isAfter()或isSame()和月

function purchaseDateChecker(dateSelection) { 
 
    var datePeriod = moment(dateSelection, 'YYYY-MM-DD'), 
 
    cutOffDate = moment('2015-10-01'), 
 
    todayDate = moment(), 
 
    purchaseDateStatus, 
 
    daysDiff = todayDate.diff(datePeriod, 'days'), 
 
    monthsDiff = todayDate.diff(datePeriod, 'months'), 
 
    yearDiff = todayDate.diff(datePeriod, 'years'); 
 

 
    console.log('purchase date: ' + datePeriod); 
 
    console.log('days difference: ' + daysDiff); 
 
    console.log('mths difference: ' + monthsDiff); 
 
    console.log('years difference: ' + yearDiff); 
 
    console.log('today date: ' + todayDate); 
 

 
    if (datePeriod.isBefore(cutOffDate) && daysDiff < 61) { 
 
    // Purchased date is before the cut off date or less than 61 days 
 
    purchaseDateStatus = 'purchased before'; 
 
    } else if (datePeriod.isAfter(cutOffDate) || datePeriod.isSame(cutOffDate) || daysDiff < 31) { 
 
    // Purchased date is after/the same as cut off date or less than 31 days 
 
    purchaseDateStatus = 'purchased after'; 
 
    } else if (datePeriod.isAfter(cutOffDate) || datePeriod.isSame(cutOffDate) || daysDiff < 31 && monthsDiff < 6) { 
 
    // Purchased date is after/the same as cut off date or less than 31 days 
 
    purchaseDateStatus = 'between 31 days 6 months'; 
 
    } else if (yearDiff > 6) { 
 
    purchaseDateStatus = 'over 6 years'; 
 
    } else if (monthsDiff > 6 || yearDiff < 6) { 
 
    purchaseDateStatus = ' between 6 months and 6 years'; 
 
    } else if (datePeriod.isBefore(cutOffDate) || daysDiff < 61 && monthsDiff < 6) { 
 
    purchaseDateStatus = 'between 61 days and 6 months' 
 
    } 
 

 
    return purchaseDateStatus; 
 
} 
 

 
console.log(purchaseDateChecker('2015-04-01'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>

+0

而不是設置變量然後返回,爲什麼不立即返回? –

+0

不確定你的意思?是這個嗎?? if(datePeriod.isBefore(cutOffDate)&& daysDiff <61){return'before purchased before'; – NiseNise

回答

0

改變了我的邏輯31天,不足6位之間並刪除加法變量返回字符串

if (datePeriod.isBefore(cutOffDate) && daysDiff < 61){ 
    return dateSelection = 'purchased before'; 
    } 
    else if (datePeriod.isBefore(cutOffDate) && daysDiff > 61 && monthsDiff < 6) { 
    // purchased date is before the cut off date or less than 61 days 
    return dateSelection = 'between 61 days and 6 months' 
    } 
    else if (datePeriod.isAfter(cutOffDate) || datePeriod.isSame(cutOffDate) || daysDiff < 31) { 
     // purchased date is after/the same as cut off date or less than 31 days 
     return dateSelection = 'purchased after'; 
    } 
    else if (datePeriod.isAfter(cutOffDate) || datePeriod.isSame(cutOffDate) || daysDiff > 31 && monthsDiff < 6) { 
     return dateSelection = 'between 31 days 6 months'; 
    } 
    else if (monthsDiff > 6 && yearDiff < 6) { 
     return dateSelection = 'between 6 months and 6 years'; 
    } 
    else if (yearDiff > 6) { 
    return dateSelection = 'over 6 years'; 
    } 
相關問題