给定calculateNextDueDate
和initialDueDate
的函数interval
会返回nextDueDate
。我还需要这个函数来测试传递的参数的有效性。有什么建议?先感谢您。
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'))
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
答案 0 :(得分:0)
根据validation的Moment.js文档,您需要以下内容:
if (!moment(initialDueDate).isValid()) {
throw new Error('Invalid date: ' + initialDueDate);
}
你不能说 initialDueDate 是什么(Date?string?)。如果它是一个字符串,您还应该向解析器提供字符串的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');
}
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;