最近在二期开发的时候 碰到的主要难点是债券付息兑付计划制定的业务问题 开发过程中涉及的许多算法
初步完成的代码中涉及到很多日期的特殊计算 记录下来做金融项目的时候可以作为参考 因为进度很急代码没有重构 只是为了未完成功能的第一阶段的代码
—— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— ——
1.(1)业务场景
付息频率为 月/次 为单位 能拿到字段 起息日 到期日 需要计算出中间所有的付息兑付计划日期
(2)主要问题:
1>如果起息日为某月31号 遇到没有31号的月份需要取30号
2>如果起息日为30号 或者29号 遇到平年2月份需要取28号
(3)算法分析:
按照付息频率 拿到每个付息月份可以用calendar类自带加法运算月份的方法 add(int field, int amount) ( 此方法取到的日期 假如起息日为某月30日 如果下一个计息月为2月 会给你自动取到最后一天28日 那么在for循环中再往下计算会都取到计息月份的28号)
calendar类自带可以取到一个月最后一天的方法 那么若是31号 则取到当月的最后一天
如果是30号或者29号 按照add方法计算出所有计息日期放入list 然后遍历list 将不是二月份的日期全部替换成30号或29号