【Python实战】使用python计算多种类型到期还款日

一般金融产品的账务测试时,我们会接触到还款方式,到期还款日等概念。
在自动化测试或者脚本使用中,我们需要动态的生成到期还款日去进行账务测试,这篇文章主要介绍了常见的几种到期还款日计算方式。
一、固定期限(比如放款日后的30日)
二、放款日的对日( 假设1月5日放款,2月5日为还款日;假设1月31号放款,2月只有28天,28号为还款日;假设3月31号放款,4月30号为还款日;)
三、每月固定某一天作为还款日,比如:等本等息、等额本息、等额本金等贷款方式有这种类型;

下面附上对应的代码:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:dealTime.py
#日期:2019-08-30
#备注:通过time和datetime模块对时间进行处理
1. 按日计息-固定期限还款-计算到期还款日(传入放款日期、固定期限天数)
2. 按月计息-每月对日还款-计算还款日期(传入放款日期、第N期)
3. 按月计息-每月固定日期还款-计算还款日期(传入放款日期、第N期)'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''from datetime import datetime,timedelta,date
import time
import calendar# 传入str类型计算到期还款日(按日计息)
def month_days(dt_str,num):dt_time = datetime.strptime(dt_str, "%Y-%m-%d")delta = timedelta(days=num)n_days = (dt_time + delta).strftime('%Y-%m-%d')print(n_days)# 按月还款:ym_str-字符串格式放款日期; num-第N期; n_date-得到字符串类型还款日期
# (假设1月31号放款, 2月只有28天,28号为还款日;假设3月31号放款,4月30号为还款日; 假设4月5日放款,5月5日为还款日)
def date_calculate(ym_str,num):ym_date = datetime.strptime(ym_str, "%Y-%m-%d")s_year = ym_date.years_month = ym_date.month + num                     # 第N个月s_day = ym_date.dayn_year = int((s_month-1)/12)                      # 对比12个月,计算年度c_year = s_year +n_yearc_month = s_month-12*n_yearc_day = calendar.monthrange(c_year, c_month)[1]   # 获取某月多少天:闰年(被4整除且不被100整除、或者被400整除)2月29天,否则28天#print(type(days),days)                           # 第一个元素:这个月的第一天是星期几(0-6); 第二个元素:这个月的天数if c_day>=s_day:                                  # 如果当月天数小于借款日天数,取当月天数,否则取借款日天数n_day = s_dayelse:n_day = c_dayn_date = date(c_year,c_month,n_day).strftime('%Y-%m-%d')print(n_date)return(n_date)# 每月固定某天还款(开始日期,期数,到期还款日)
def date_fixed(ym_str,num,day):ym_date = datetime.strptime(ym_str, "%Y-%m-%d")s_year = ym_date.year                             # 起始、年s_month = ym_date.month + num                     # 第N个月n_year = int((s_month-1)/12)                      # 对比12个月,如果跨年,进一c_year = s_year +n_yearc_month = s_month-12*n_yearn_date = date(c_year, c_month, day).strftime('%Y-%m-%d')#print(n_date)return (n_date)

举例:第一种类型-->

第二种类型-->

第三种类型-->

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fiddler抓包工具之Filters(过滤器)进行会话过滤

一、设置User Fiters启用 未勾选Use Filters,未启用此功能;已勾选Use Filters,已启用此功能 二、Action设置 Run Filterset now :马上执行过滤,立即生效过滤 Load Filterset: 加载本地过滤文件到fiddler Save Filt…

【pyQT5】Python3+pyQT5开发环境安装与配置

在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。 Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时…

【TensorFlow】TensorFlow是什么?

TensorFlow 是一个开源的、基于 Python 的机器学习框架,它由 Google 开发,并在图形分类、音频处理、推荐系统和自然语言处理等场景下有着丰富的应用,是目前最热门的机器学习框架。 除了Python,TensorFlow 也提供了 C/C、Java、Go、…

【TensorFlow】Win7+Anaconda+python3.6+Tensorflow1.9安装教程

相关链接 官网:https://tensorflow.google.cn/ github:https://github.com/tensorflow/tensorflow 中文社区网:http://www.tensorfly.cn/ 安装说明 平台:windows 7 Anaconda版本:4.6.14 python版本:3.6.…

【Jmeter篇】如何利用Jmeter配置元件计数器、随机变量制造批量数据和变量参数化?

一、计数器 1、线程组-配置元件-计数器 2、功能介绍 starting value:给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数器 递增(Increment): 每次迭代后,给计数器增加的值 最大值(Maximum) :…

软件工程经济学习题 答案(不保证对错,找不到答案)

一、资金等值计算 1.某IT企业今年向银行贷款20万元以购置一台设备。若银行贷款利率为10%,规定10年内等额偿还,试求每年的偿还金额。 2.某软件企业向银行贷款200万元,按年利率为8%进行复利计息,试求该企业第5年末连本带利一次偿还银…

Django+Jquery+Ajax+验证码登录案例

1,创建项目test04 2,创建应用app为booktest 3,注册应用booktest 作用让创建的应用运行起来 4,在项目根目录下创建模板templates目录 作用就是存放html文件在项目的settings.py文件中配置模板,如下图:5&…

【数据库】Mysql日期/时间函数实际案例

有一款金融产品,总共24期,每月2日到期还款日,第一个到期还款日为放款日下个月的2日,现在我们知道所有订单的放款时间,现在我们想统计每个订单当前时间是第几期。 举个简单例子:当期日期为2019-11-12&#…

【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动

之前我们的用例数据都是配置在 Jmeter Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢? 其实我们可以将用…

module 'queue' has no attribute 'Queue'解决

import queue q queue.Queue() q.put(a) q.put(b) print(q.get())错误: AttributeError: module queue has no attribute Queue 解决方法: 把程序名命名和包名一样导致错误。命名为queue1.py就ok了

【Python】import自己的模块报错

在实际使用python时,我们会将一些公共的东西写到一些基础模块中,供其他模块去调用,这时会去import自定义的一些基础模块,然后来导入。 自己写好了脚本,然后导入,导入的情况分为以下情况: 1. 运行…

Jmeter生成自动化和性能多维度测试报告(性能指标和监听器图表)

jmeter在命令行下还可以生成多维度的测试报告,里面包含了常用的性能指标和监听器图表。 一、环境要求 1、jmeter3.0版本之后开始支持动态生成测试报表 2、jdk版本1.7以上 3、需要jmx脚本文件 二、生成jtl文件 1、进入bin目录下cd jmeter -n -t C:\jmeter\apach…

【Python】pyinstaller模块打包的exe在windows环境无法使用问题汇总

问题一:解决pyinstaller打包发布后的exe文件打开控制台闪退的问题 pyinstaller打包发布后的exe文件在自己电脑能够正常使用,但是给到别人的电脑时,打开exe文件却发生闪退,看不到具体的原因。 1、定位问题: 1.1.切换到…

Appium+PythonUI自动化测试之uiautomatorviewer和Inspector元素定位

一、uiautomatorviewer uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。 1、启动uiautomatorviewer.bat,打开sdk安装…

服务器购买和远程连接

1. 申请阿里云服务器 *打开阿里云ECS购买页面,并用淘宝账号登陆,可以按需购买。基础配置的话包月大约60元/月 在部署阶段也可以选择按使用流量付费,只需要32元/月,后续部署成功后进行配置升级 操作系统选择Ubuntu的最新版本 …

【Linux】与用户管理相关的命令总结

这篇文章主要总结一下linux中用户相关的命令: 一、查询用户信息相关: 二、用户创建、删除相关: 三、用户密码相关 四、用户组相关 一、查询用户信息相关: 1. cat /etc/passwd 可以查看所有用户的列表 具体内容介绍 :分隔成7个…

Xshell连接阿里云服务器ECS

1. 参考资料: 1). 《阿里云服务器怎么用?阿里云服务器使用教程》 链接:http://www.cr173.com/html/50758_1.html 2). eagle-zhang的CSDN博客《Xshell连接不上阿里云服务 链接:http://blog.csdn.net/zhangxing52077/…

【数据库】Windows安装redis全流程

Redis:REmote DIctionary Server(远程字典服务),是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。 是完全开源免费的,用C语言编写的,遵守BSD协议,高性…

Jmeter跨线程组传递参数

jmeter的线程组之间是相互独立的,各个线程组互不影响,所以线程组A中输出的参数,是无法直接在线程组B和线程组C中被调用的。 但是有时为了方便管理,我们可能是把各个接口单独存放在不同的线程组中。拿token来说,虽然每…

【工具】Notepad++的一些常用配置

Notepad是d Winows操作系统下的一套文本编辑器(软件版权许可证: GPL),有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。 本文主要介绍了Notepad的一些常用配置。 一、设置默认打开txt、java文件 菜单:设置—>首选项—>文件关联 设置后&a…