Datetime模块应用:Python计算上周周几对应的日期

简介: Datetime模块应用:Python计算上周周几对应的日期

Datetime模块应用:Python计算上周周几对应的日期

我们希望有一个通用的解决方案能找出一周中上一次出现某天时的日期。比方说上周四是几月几号?

解决方案
Python的datetime模块中有一些实用函数和类可以帮助我们完成这样的计算。关于这个问题, 本人的设计源码如下:

from datetime import datetime, timedelta

weekdays = {
   '周一': ('Monday', 0), '周二': ('Tuesday', 1), '周三': ('Wednesday', 2), '周四': ('Thursday', 3),
            '周五': ('Friday', 4), '周六': ('Saturday', 5), '周日': ('Sunday', 6)}


def get_previous_byday(dayname, start_date=None):
    if start_date == None:
        start_date = datetime.today()

    day_num = start_date.weekday()
    day_num_target = weekdays[dayname][1]
    days_ago = (7 + day_num - day_num_target) % 7
    if not days_ago:
        days_ago = 7
    if day_num <= day_num_target:
        target_date = start_date - timedelta(days=days_ago)
    else:
        target_date = start_date - timedelta(days=days_ago) - timedelta(days=7)
    return target_date


try:
    weekday_name = input('请输入周几(周一,周二...)>>> ')

    result = get_previous_byday(weekday_name)
    day_to_str = str(result).split(' ')[0]
    print('上{}的日期是 {}'.format(weekday_name, day_to_str))
except:
    print('输入错误!!!')

运行结果如下:

D:\Python39\python.exe D:/My_Project/python_cook_book/计算上周5的日期.py
请输入周几(周一,周二...)>>> 周四
上周四的日期是 2023-05-04

Process finished with exit code 0
D:\Python39\python.exe D:/My_Project/python_cook_book/计算上周5的日期.py
请输入周几(周一,周二...)>>> 周一
上周一的日期是 2023-05-01

Process finished with exit code 0
相关文章
|
1天前
|
数据挖掘 iOS开发 MacOS
利用Python计算农历日期
利用Python计算农历日期
10 4
|
1天前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
10 2
|
1天前
|
安全 测试技术 数据库
Python编程--sys模块及OS模块简单用例
Python编程--sys模块及OS模块简单用例
|
1天前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
|
1天前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
11 1
|
1天前
|
存储 编解码 iOS开发
Python模块操作:time—Clock Time(一)
Python模块操作:time—Clock Time(一)
10 0
|
1天前
|
存储 iOS开发 MacOS
Python模块操作:time—Clock Time(二)
Python模块操作:time—Clock Time(二)
|
1天前
|
缓存 网络协议 Linux
Python渗透测试之ARP毒化和协议应用
Python渗透测试之ARP毒化和协议应用
|
1天前
|
缓存 监控 程序员
Python装饰器:深入探索功能增强的神奇工具(特点+应用+举例)
Python装饰器:深入探索功能增强的神奇工具(特点+应用+举例)
6 0
|
1天前
|
IDE 开发工具 iOS开发
Python编程案例:中文金额转换并计算
Python编程案例:中文金额转换并计算