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

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too