2017-04-18 9 views
0

initialDueDateとと与えられた関数calculateNextDueDatenextDueDateを返します。また、渡される引数の妥当性をテストできるようにするには、この関数が必要です。助言がありますか?前もって感謝します。 ?あなたはinitialDueDateは(日付文字列が何であるかを言うことはありませんinitialDueDateパラメータが無効なときにエラーをスローするjavascript

if (!moment(initialDueDate).isValid()) { 
    throw new Error('Invalid date: ' + initialDueDate); 
} 

validationためMoment.jsのドキュメントによると

const INTERVAL = { 
 
    monthly: moment.duration(1, 'months'), 
 
    quarterly: moment.duration(3, 'months'), 
 
    yearly: moment.duration(1, 'years') 
 
} 
 

 
function calculateNextDueDate(initialDueDate, intervalCode) { 
 
    if (moment().diff(initialDueDate) < 0) 
 
    return initialDueDate; 
 
    return calculateNextDueDate(initialDueDate.add(INTERVAL[intervalCode]), intervalCode); 
 
} 
 

 

 
// usage 
 
console.log(calculateNextDueDate(moment('2016-01-25', 'YYYY-MM-DD'), 'monthly').format('LL')) 
 
console.log(calculateNextDueDate(moment('2016-01-25', 'YYYY-MM-DD'), 'quarterly').format('LL')) 
 
console.log(calculateNextDueDate(moment('2016-01-25', 'YYYY-MM-DD'), 'yearly').format('LL'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

@RobGはこの良いです?ありがとう:) –

答えて

0

、次のようなものが必要? )。それが文字列の場合は、文字列のもパーサーに渡す必要があります。そうでない場合は、moment.jsを使用して形式を推測しています。 Parsing Guideも参照してください。

['2017-02-28', // valid date 
 
'2017-02-29' // invalid date 
 
].forEach(function(initialDueDate) { 
 
    
 
    if (!moment(initialDueDate, 'YYYY-MM-DD').isValid()) { 
 
    throw new Error('Invalid date: \'' + initialDueDate + '\''); 
 
    
 
} else { 
 
    console.log(initialDueDate + ' is valid'); 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

おかげでたくさん@RobG –

関連する問題