2017-04-18 62 views
0

函數calculateNextDueDate給出initialDueDateinterval返回nextDueDate。我也需要這個函數來測試傳遞的參數的有效性。有什麼建議麼?先謝謝你。當initialDueDate參數無效時拋出錯誤javascript

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文檔validation,你需要的東西,如:

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

你不說什麼initialDueDate是(日期字符串? )。如果它是一個字符串,您還應該將該字符串的format提供給解析器,否則您將依靠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 –

相關問題