本文主要是介绍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)的日期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!