微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 YEAR 和 WEEK 编号获取开始/结束 DATETIME 并从 DATETIME 获取 YEAR 和 WEEK 编号

如何解决从 YEAR 和 WEEK 编号获取开始/结束 DATETIME 并从 DATETIME 获取 YEAR 和 WEEK 编号

我有一个自定义日历,每周从周四 19:00:00 开始,到周四 18:59:59 结束。 我正在尝试使用此自定义日历从给定的年和周数返回日期时间范围,并从给定的日期时间值返回年和周数。

对于 ISO 日历来说非常简单

from datetime import datetime,timedelta

def get_ISO_wk(date_time):
    yr_num = date_time.isocalendar()[0]
    wk_num = date_time.isocalendar()[1]
    if wk_num < 10:
        wk_num = "0{}".format(wk_num)

    return "WW{}-{}".format(yr_num,wk_num)

def get_ISO_range(year,week):
    d = datetime(year,1,0)
    dlt = timedelta(days=((week - 1) * 7) - 2)
    wk_start = d + dlt

    d = datetime(year,23,59,59)
    dlt = timedelta(days=((week - 1) * 7) - 2)
    wk_end = d + dlt + timedelta(days=6)

    return str(wk_start),str(wk_end)

my_dt = datetime(2020,12,31,10,43,22)
my_yr = 2020
my_wk = 53

print("ISO Week is {}".format(get_ISO_wk(my_dt)))
print("Week range is {}".format(get_ISO_range(my_yr,my_wk)))

>>> ISO Week is WW2020-53
>>> Week range is ('2020-12-28 00:00:00','2021-01-03 23:59:59')

我做了一些研究,发现这个 customize calendar 对于指定一周的开始日期非常有用。但我就是不知道如何添加自定义开始/结束时间并使用自定义日历从给定的年份和周数推导出日期范围。

人们是如何做到这一点的?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。