```python
def year_mon_for_check(year, week):
"""通过年周获取当前月,按每周最后一天的月份比对(最后一天为周日)"""
end_year_week = str(year) + '-' + str(week) + '-' + '0'
end_week_result = time.strptime(end_year_week, '%Y-%W-%w')
return int(end_week_result.tm_mon)
def get_num_week(year, week):
"""
:param year: 哪一年
:param week: 哪一周
通过几几年的第几周 获取某一周的周一和周日的时间 格式例:2021-12-27 年-月-日
一年有【0-52】周 周范围【0-6】0为周日 1-6 周一 ~ 周六
周一为每周的第一天
周日为每周的最后一天
"""
start_year_week = str(year) + '-' + str(week) + '-' + '1'
end_year_week = str(year) + '-' + str(week) + '-' + '0'
start_week_result = time.strptime(start_year_week, '%Y-%W-%w')
end_week_result = time.strptime(end_year_week, '%Y-%W-%w')
start_week_date = str(start_week_result.tm_year) + '-' + str(start_week_result.tm_mon) + '-' + str(start_week_result.tm_mday)
end_week_date = str(end_week_result.tm_year) + '-' + str(end_week_result.tm_mon) + '-' + str(end_week_result.tm_mday)
return start_week_date, end_week_date
def get_year_week(week_time: str):
"""
获取日期所处年,周(加不可为未来的日期)
:param week_time: 2002-01-02格式
"""
week_year, week_num, __ = datetime.date(*map(int, week_time.split('-'))).isocalendar()
week_mon = int(week_time.split('-')[1])
now_time = datetime.datetime.now() + datetime.timedelta(hours=8)
"""增加周数判断,不能创建未来周报"""
now_year, now_week, __ = now_time.isocalendar()
# 还要考虑跨年时的情况
if week_num > now_week and week_year >= now_year:
raise ValueError("无法创建此工时,不可创建未来日期的工时")
return week_year, week_num, week_mon