Python datetime 模块之获取某年某月的第 n 天(第 n 个星期 w)和倒数第 n 天(倒数第 n 个星期 w)的日期

本文主要是介绍Python datetime 模块之获取某年某月的第 n 天(第 n 个星期 w)和倒数第 n 天(倒数第 n 个星期 w)的日期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

____tz_zs

获取某年某月的第n天和倒数第n天的日期

例如:
获取2019年6月的第一天和最后一天
获取2019年6月的第2天和倒数第2天

# -*- coding: utf-8 -*-
"""
@author: tz_zs
"""
import calendar
from datetime import datetimedef get_month_firstday_and_lastday(year, month, n=1):"""获取 year 年,month 月 的第n天和倒数第n天的日期:param year: 指定年份,如 2019:param month: 指定月份,如 6:param n::return: 第n天,倒数第n天"""weekday, count_day = calendar.monthrange(year=year, month=month)  # 返回指定月份第一天(即1号)的星期日期,和本月的总天数【日历模块 calendar https://blog.csdn.net/tz_zs/article/details/86629959】# 获取指定月的第一天和最后一天first_day = datetime(year=year, month=month, day=n)  # <type 'datetime.datetime'>last_day = datetime(year=year, month=month, day=count_day - (n - 1))# print(first_day)# print(last_day)# print(first_day.date())# print(last_day.date())return first_day, last_day# 获取2019年6月的第一天和最后一天
first_day, last_day = get_month_firstday_and_lastday(year=2019, month=6, n=1)
print(first_day.date())  # 2019-06-01
print(last_day.date())  # 2019-06-30
# 获取2019年6月的第2天和倒数第2天
first_day, last_day = get_month_firstday_and_lastday(year=2019, month=6, n=2)
print(first_day.date())  # 2019-06-02
print(last_day.date())  # 2019-06-29

获取某年某月的第n个星期w和倒数第n个星期w的日期

例如:
获取2019年6月的第一个和最后一个星期五
获取2019年6月的第2个和倒数第2个星期五

# -*- coding: utf-8 -*-
"""
@author: tz_zs
"""
import calendar
from datetime import datetime
from datetime import timedeltadef get_weekday(datetime_obj, week_day="monday"):"""获取指定时间的当周的星期x:param datetime_obj: 时间:param week_day: 指定的星期x:return:"""d = dict(zip(("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"), range(7)))  # datetime 模块中,星期一到星期天对应数字 0 到 6delta_hour = timedelta(days=1)  # 改变幅度为 1 天while datetime_obj.weekday() != d.get(week_day):if datetime_obj.weekday() > d.get(week_day):datetime_obj -= delta_hourelif datetime_obj.weekday() < d.get(week_day):datetime_obj += delta_hourelse:passreturn datetime_objdef get_first_and_last_weekday(year, month, n=1, w="monday"):"""获取 year 年,month 月 的第n个星期w和倒数第n个星期w的日期:param year: 指定年份,如 2019:param month: 指定月份,如 6:param n: 第n个:param w: 指定的星期w:return:"""# 获取第一和最后一天d = dict(zip(("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"), range(7)))  # datetime 模块中,星期一到星期天对应数字 0 到 6weekday, count_day = calendar.monthrange(year=year, month=month)  # 返回指定月份第一天(即1号)的星期日期,和本月的总天数 https://blog.csdn.net/tz_zs/article/details/86629959first_day = datetime(year=year, month=month, day=1)  # <type 'datetime.datetime'>last_day = datetime(year=year, month=month, day=count_day)# first_day, last_day = get_month_firstday_and_lastday(year=year, month=month, n=1)# 第1个星期wif first_day.weekday() > d.get(w):  # 说明本周的星期w在上个月datetime_obj = first_day + timedelta(weeks=1)else:datetime_obj = first_daydatetime_obj += timedelta(weeks=n - 1)first_weekday = get_weekday(datetime_obj=datetime_obj, week_day=w)# 倒数第1个星期wif last_day.weekday() < d.get(w):  # 说明本周的星期w在下一个月datetime_obj = last_day - timedelta(weeks=1)else:datetime_obj = last_daydatetime_obj -= timedelta(weeks=n - 1)last_weekday = get_weekday(datetime_obj=datetime_obj, week_day=w)return first_weekday, last_weekday# 获取2019年6月的第一个和最后一个星期五
first_weekday, last_weekday = get_first_and_last_weekday(year=2019, month=6, n=1, w="friday")
print(first_weekday.date())  # 2019-06-07
print(last_weekday.date())  # 2019-06-28# 获取2019年6月的第2个和倒数第2个星期五
first_weekday, last_weekday = get_first_and_last_weekday(year=2019, month=6, n=2, w="friday")
print(first_weekday.date())  # 2019-06-14
print(last_weekday.date())  # 2019-06-21

end

这篇关于Python datetime 模块之获取某年某月的第 n 天(第 n 个星期 w)和倒数第 n 天(倒数第 n 个星期 w)的日期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954311

相关文章

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的

浅析python如何去掉字符串中最后一个字符

《浅析python如何去掉字符串中最后一个字符》在Python中,字符串是不可变对象,因此无法直接修改原字符串,但可以通过生成新字符串的方式去掉最后一个字符,本文整理了三种高效方法,希望对大家有所帮助... 目录方法1:切片操作(最推荐)方法2:长度计算索引方法3:拼接剩余字符(不推荐,仅作演示)关键注意事

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

Python容器转换与共有函数举例详解

《Python容器转换与共有函数举例详解》Python容器是Python编程语言中非常基础且重要的概念,它们提供了数据的存储和组织方式,下面:本文主要介绍Python容器转换与共有函数的相关资料,... 目录python容器转换与共有函数详解一、容器类型概览二、容器类型转换1. 基本容器转换2. 高级转换示

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA