Python之计算当前月份的日期范围(calendar、datetime)
在当前月份中循环每一天
大致的思路就是先计算出当月的第一天和下个月的第一天日期,还有当月总共有多少天,然后把第一天日期按照月总天数累加到下个月的第一天,就ok 啦
from datetime import datetime, date, timedelta
import calendar def get_month_range(start_date=None):
if start_date is None:
print(date.today()) # 2019-03-05 # 今天的日期
start_date = date.today().replace(day=1) # 修改当前时间。比如修改成当月1号
print(start_date) # 2019-03-01 当月的第一天日期
_, days_in_month = calendar.monthrange(start_date.year, start_date.month)
print(days_in_month) # 31 当月总天数31天
end_date = start_date + timedelta(days=days_in_month)
print(end_date) # 2019-04-01
return (start_date, end_date) start_date,end_date = get_month_range()
print(start_date,end_date) #日期范围 2019-03-01 2019-04-01
a_day=timedelta(days=1)
print(a_day) # 1 day, 0:00:00
li=[]
while start_date<end_date:
li.append(start_date)
start_date+=a_day
# print(li)
# [datetime.date(2019, 3, 1), datetime.date(2019, 3, 2), datetime.date(2019, 3, 3), datetime.date(2019, 3, 4),
# datetime.date(2019, 3, 5), datetime.date(2019, 3, 6), datetime.date(2019, 3, 7), datetime.date(2019, 3, 8),
# .......
# datetime.date(2019, 3, 29), datetime.date(2019, 3, 30), datetime.date(2019, 3, 31)]
# 结束日期并不包含在这个日期范围内(事实上它是下个月的开始日期)。 这个和Python的 slice 与 range 操作行为保持一致,同样也不包含结尾。 # 使用生成器优化这段代码
def date_range(start,stop,step):
if start<stop:
yield start
li.append(start)
start+=step
date_range(start_date,end_date,timedelta(days=1)) # print(li)
补充:datetime
now = datetime.now()
print(now)
# 返回一个time结构
print(
now.timetuple()) # time.struct_time(tm_year=2019, tm_mon=3, tm_mday=5, tm_hour=9, tm_min=41, tm_sec=52, tm_wday=1, tm_yday=64, tm_isdst=-1)
# 返回一个date类型
print(now.date()) # 2019-03-05
# 返回一个time类型
print(now.time()) # 09:41:52.715695
# 当前星期几。星期一是0,星期于是6 注意这里是方法,不是属性哦。
print(now.weekday()) #
# 当前星期几。星期一是1,星期日是7注意这里是方法,不是属性哦。
print(now.isoweekday()) #
# 修改当前时间。比如修改成当月1号
print(now.replace(day=1)) # 2019-03-01 09:41:52.715695
past = datetime(2010, 11, 12, 13, 14, 15, 16) # 2010-11-12 13:14:15.000016
print(past)
# 进行比较运算返回的是timedelta类型
print(now - past) # 3034 days, 20:27:37.715679
# 转成字符串
strdatetime = now.strftime("%Y-%m-%d %H:%M:%S")
print(strdatetime) # 2019-03-05 09:41:52
# 字符串生成datetime对象
print(datetime.strptime(strdatetime, "%Y-%m-%d %H:%M:%S")) # 2019-03-05 09:41:52
返回指定年的某月:calendar
import calendar def get_month(year, month):
return calendar.month(year, month) # 返回指定年的日历
def get_calendar(year):
return calendar.calendar(year) # 判断某一年是否为闰年,如果是,返回True,如果不是,则返回False
def is_leap(year):
return calendar.isleap(year) # 返回某个月的weekday的第一天和这个月的所有天数
def get_month_range(year, month):
return calendar.monthrange(year, month) # 返回某个月以每一周为元素的序列
def get_month_calendar(year, month):
return calendar.monthcalendar(year, month) # 返回指定年的日历
def get_calendar(year):
return calendar.calendar(year) # 判断某一年是否为闰年,如果是,返回True,如果不是,则返回False
def is_leap(year):
return calendar.isleap(year) # 返回某个月的weekday的第一天和这个月的所有天数
def get_month_range(year, month):
return calendar.monthrange(year, month) # (3, 31) # 返回某个月以每一周为元素的序列
def get_month_calendar(year, month):
return calendar.monthcalendar(year, month) year = 2013
month = 8
test_month = get_month(year, month)
print(test_month)
print('#' * 50)
# print(get_calendar(year))
print('{0}这一年是否为闰年?:{1}'.format(year, is_leap(year)))
print(get_month_range(year, month))
print(get_month_calendar(year, month))
"""
"""
August 2013
Mo Tu We Th Fr Sa Su
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 ##################################################
2013这一年是否为闰年?:False
(3, 31)
[[0, 0, 0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25], [26, 27, 28, 29, 30, 31, 0]]
"""
Python之计算当前月份的日期范围(calendar、datetime)的更多相关文章
- 【转载】Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
本文转载自脚本之家,源网址为:https://www.jb51.net/article/147429.htm 一.Python中日期时间模块datetime介绍 (一).datetime模块中包含如下 ...
- js 日期计算星座 根据生日的月份和日期,一行代码计算星座的js小函数(转)
本博客根据 开源中国作者清风徐不来 的文章 根据生日的月份和日期,一行代码计算星座的js小函数(转) 原文出自CSDN 无心的专栏 的文章,知识产权归原文作者所有! 点击查看原文:js 日期计算星座
- Python标准库02 时间与日期 (time, datetime包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python具有良好的时间和日期管理功能.实际上,计算机只会维护一个挂钟时间(wa ...
- (转)Python标准库02 时间与日期 (time, datetime包)
原文:http://www.cnblogs.com/vamei/archive/2012/09/03/2669426.html https://www.liaoxuefeng.com/wiki/001 ...
- Python时间与日期操作(datetime、time、calendar)
相关模块 模块 说明 time time是一个仅包含与日期和时间相关的函数和常量的模块,在本模块中定义了C/C++编写的几个类.例如,struct_time类 datetime datetime是一个 ...
- Python练习题 004:判断某日期是该年的第几天
[Python练习题 004]输入某年某月某日,判断这一天是这一年的第几天? ---------------------------------------------- 这题竟然写了 28 行代码! ...
- JavaScript 计算指定月份有多少天
用 js 画工作日历的时候,需要用 js 计算指定月份一共有多少天 在网上找了些方法,都比较繁琐,后来灵机一动,想到一个偷懒的办法,分享一下 一.原理分析 要想得到某月有多少天,只需要获取到当月最后一 ...
- Python 日期和时间 —— datetime
Python 日期和时间 —— datetime Python提供了多个内置模块用于操作日期时间,如calendar,time,datetime.calendar用于处理日历相关 :time提供的接口 ...
- windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等
安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...
随机推荐
- 四、附加到进程调试(.NET Core)
1.安装.net core windows server托管工具包: 1.下载https://dotnet.microsoft.com/download/thank-you/dotnet-runtim ...
- 一、WebApi模型验证实践项目使用
一.启语 前面我们说到,模型验证的原理(包含1.项目创建,2.模型创建,3.走通测试模型验证,4.在过滤器中处理返回json格式(非控制器内))-完全是新手理解使用的,新番理解 通常情况下,对于那些经 ...
- 02 | 日志系统:一条SQL更新语句是如何执行的? 学习记录
<MySQL实战45讲>02 | 日志系统:一条SQL更新语句是如何执行的? 学习记录http://naotu.baidu.com/file/ad320c7a0e031c2d6db7b5a ...
- 【串线篇】Mybatis缓存之二级缓存
1.应用 二级缓存:namespace级别的缓存:SqlSession关闭或者提交以后有效 一级缓存:SqlSession关闭或者提交以后,一级缓存的数据会放在二级缓存中: 二级缓存的使用:mybat ...
- 【串线篇】Mybatis缓存之一级缓存
1.体会 一级缓存:MyBatis:SqlSesion级别的缓存:默认存在,不需要设置. 机制:只要之前查询过的数据,mybatis就会保存在一个缓存中(Map):下次获取直接从缓存中拿:当前sess ...
- golang web
最简web package main import ( "io" "net/http" "log" ) func HelloServer(w ...
- ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)
ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...
- [转]Win10企业版无法访问共享文件夹
Win10系统电脑在更新后,当我们访问共享文件夹时可能会出现如下图所示窗口,导致我们无法访问.那么这个问题如何解决呢?具体如下:1. 首先我们按“Windows+R键”打开运行窗口.2. 在该窗口文本 ...
- idea将本地项目推送到git远程库
如何将本地项目推送到github远程仓库? 1. 在github上创建一个仓库,取名mybatis 2. 在idea中将项目交由git管理 注意,文件名会变红了, 说明这些文件在git工作区,但还没规 ...
- webpack对脚本和样式的处理
一.对js处理 webpack本身支持js加载也可以用插件. 1.加载要全局使用的插件比如jquery 在页面用cdn方式引用,然后再webpack.config.js里配置.会让jquery成为全局 ...