【1】根据当前月求上个月、下个月的最后一天

(1)求当前月最后一天

(2)求前一个月的最后一天

(3)求下一个月的最后一天

学习示例与应用实例,代码如下:

 #!/usr/bin/python3
 #-*- coding: utf-8 -*-

 import datetime
 import calendar

 # 理论学习示例
 print('理论学习示例')

 time = datetime.date(2018, 12, 23) # 年,月,日

 print('year : ' + str(time.year) + ' month : ' + str(time.month))

 # 求当前月第一天
 first_day = datetime.date(time.year, time.month, 1)
 print ('当前月的第一天:' + str(first_day))

 # 求当前月的最后一天
 days_num = calendar.monthrange(first_day.year, first_day.month)[1]  # 获取当前月有多少天
 last_day_of_current_month = first_day + datetime.timedelta(days = days_num - 1)  # 当前月的最后一天只需要days_num - 1 即可
 print ('当前月最后一天:' + str(last_day_of_current_month))

 # 求前一个月最后一天
 pre_month = first_day - datetime.timedelta(days = 1) # timedelta是一个不错的函数
 print ('前一个月最后一天:' + str(pre_month))

 # 求前一个月的第一天
 first_day_of_pre_month = datetime.date(pre_month.year, pre_month.month, 1)
 print ('前一个月的第一天:' + str(first_day_of_pre_month))

 # 求下个月的第一天
 first_day_of_next_month = first_day + datetime.timedelta(days = days_num)
 print ('下个月的第一天:' + str(first_day_of_next_month))

 # 求下个月的最后一天
 next_month_days = calendar.monthrange(first_day_of_next_month.year, first_day_of_next_month.month)[1]  # 获取下个月有多少天
 next_month = first_day_of_next_month + datetime.timedelta(days = next_month_days - 1)
 print ('下个月最后一天:' + str(next_month))

 print('\n')
 # 应用实例

 print('应用实例')

 cycleid = "

 print('cycleid_year : ' + str(cycleid[0:4]) + ' cycleid_month : ' + str(cycleid[4:6]))

 month = int(cycleid[4:6])
 print("month : " + str(month))

 first_day_of_current_cycleid = datetime.date(int(cycleid[0:4]), int(cycleid[4:6]), 1)
 print("first_day : " + str(first_day_of_current_cycleid))

 def getNextCycleidFirstDay() :
     first_day_of_current_cycleid = datetime.date(int(cycleid[0:4]), int(cycleid[4:6]), 1)
     days_num = calendar.monthrange(first_day_of_current_cycleid.year, first_day_of_current_cycleid.month)[1]
     first_day_of_next_cycleid = first_day_of_current_cycleid + datetime.timedelta(days = days_num)
     return first_day_of_current_cycleid, first_day_of_next_cycleid

 current_fd, next_fd = getNextCycleidFirstDay()
 print("current_fd : " + str(current_fd) + " next_fd : " + str(next_fd))

 '''
 理论学习示例
 year : 2018 month : 12
 当前月的第一天:2018-12-01
 当前月最后一天:2018-12-31
 前一个月最后一天:2018-11-30
 前一个月的第一天:2018-11-01
 下个月的第一天:2019-01-01
 下个月最后一天:2019-01-31

 应用实例
 cycleid_year : 2019 cycleid_month : 12
 month : 12
 first_day : 2019-12-01
 current_fd : 2019-12-01 next_fd : 2020-01-01
 '''

Good Good Study, Day Day Up.

顺序 选择 循环 总结

python 求下个月的最后一天的更多相关文章

  1. 使用python求字符串或文件的MD5

    使用python求字符串或文件的MD5 五月 21st, 2008 #以下可在python3000运行. #字符串md5,用你的字符串代替'字符串'中的内容. import hashlib md5=h ...

  2. python求微分方程组的数值解曲线01

    本人最近在写一篇关于神经网络同步的文章,其一部分模型为: x_i^{\Delta}(t)= -a_i*x_i(t)+ b_i* f(x_i(t))+ \sum\limits_{j \in\{i-1, ...

  3. Python 求点到直线的垂足

    Python 求点到直线的垂足 在已知一个点,和一条已知两个点的直线的情况下 运算公式参考链接:https://www.cnblogs.com/mazhenyu/p/3508735.html def ...

  4. python求100以内素数

    python求100以内素数之和 from math import sqrt # 使用isPrime函数 def isPrime(n): if n <= 1: return False for ...

  5. Python 求两个文本文件以行为单位的交集 并集 差集

    Python 求两个文本文件以行为单位的交集 并集 差集,来代码: s1 = set(open('a.txt','r').readlines()) s2 = set(open('b.txt','r') ...

  6. python求极值点(波峰波谷)

    python求极值点主要用到scipy库. 1. 首先可先选择一个函数或者拟合一个函数,这里选择拟合数据:np.polyfit import pandas as pd import matplotli ...

  7. Python求一个数字列表的元素总和

    Python求一个数字列表的元素总和.练手: 第一种方法,直接sum(list): 1 lst = list(range(1,11)) #创建一个1-10的数字列表 2 total = 0 #初始化总 ...

  8. python 求MD5值

    (一)求字符串的MD5值 import hashlib #导入功能模块,此模块有MD5,SHA1,SHA256等方法 m = hashlib.md5() #声明一个对象 m.update(b'hell ...

  9. python求线性回归斜率

    一. 先说我对这个题目的理解 直线的x,y方程是这样的:y = kx+b, k就是斜率. 求线性回归斜率, 就是说 有这么一组(x, y)的对应值——样本.如果有四组,就说样本量是4.根据这些样本,做 ...

随机推荐

  1. 集合框架(01)Collection

    1.集合:存储对象. 对象多了用集合存,数据多了用对象存 2.数组是固定长度,集合是不固定长度:数组是相同数据类型,集合是存储不同类型的对象 3 . 4.为什么会出现这么多的容器那,因为每一个容器对数 ...

  2. Android开发实践:Java层与Jni层的数组传递

    转载:http://www.linuxidc.com/Linux/2014-03/97561.htm Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是 ...

  3. Redis(二)linux下redis安装

    上篇讲解了redis在windows下的安装,接下来看看在linux下如何安装redis(纯菜鸟入门级别)? (1)redis的下载及编译 这里,首先进入存放文件目录(我的云服务器的是:cd /jel ...

  4. mapx 32位在win8 64位上使用

    在可以安装32位mapx的电脑上安装并破解后,将安装文件复制出来,放到c盘根目录下,用下面语句进行注册即可 Regsvr32 C:\MapX\Mapx50.DLL Regsvr32 C:\\MapX\ ...

  5. UVa11988 Broken Keyboard(练习链表使用)

    向量和数组的优势是可以随机的存取元素和在末尾添加删除元素,而当插入元素时,需要移动大量的数据,消耗大量的时间.而链表的优势是可以在O(1)删除和插入数据.所以在频繁移动元素时,可以使用链表. 分析:如 ...

  6. Python中使用XMLRPC(入门)

    一.简介 RPC是Remote Procedure Call的缩写,翻译成中文为:远程方法调用. 它是一种在本地机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了 ...

  7. lamp+nginx代理+discuz+wordpress+phpmyadmin

    实验课题:搭建LAMP,安装Nginx,作为代理,将MySQL安装在单独的机器,apache负责动态,nginx负责静态 实验环境: 1.VMware Workstation 11 2.设备A:MyS ...

  8. EarlyZ disable( earlyz失效

    There are a few ways to disable EarlyZ list here: Shader depth output disabled Alpha test with depth ...

  9. Javascript中的高阶函数介绍

    高阶函数:高阶看上去就像是一种先进的编程技术的一个深奥术语,一开始我看到的时候我也这样认为的. Javascript的高阶函数 然而,高阶函数只是将函数作为参数或返回值的函数.以下面的Hello,Wo ...

  10. Java反射学习总结五(Annotation(注解)-基础篇)

    Annotation(注解)简单介绍: 注解大家印象最深刻的可能就是JUnit做单元測试,和各种框架里的使用了. 本文主要简介一下注解的用法,下篇文章再深入的研究. annotation并不直接影响代 ...