获取日期对应的周数(Python)

时间:2025-02-10 07:35:28

功能:获取日期对应的周数(一年算52周,超过一年的范围,相同周数按照年区分)

1、问题:平衡表数据处理脚本,需要以周为单位,判断日期字段在某年某周来进行汇总处理。

2、调用方法

'''  
isinstance(x, A_tuple) 	 断言,判断对象是否是已知类型
	x:需要判断的实列对象
	A_tuple:已知类型,或者类型组成的元组,考虑继承关系
	类型相同,返回	True
	类型不同,返回	False
'''
data_1 = 1
data_2 = '2'
if isinstance(data_1, (int, str, float)):
   print(data_1)
if isinstance(data_2, str):
   print(data_2)

3、导入的包

import datetime

4、 代码

import datetime
	
	
def date_week(date):
    '''
    功能:获取日期对应的周数(一年算52周,超过一年的范围,相同周数按照年区分)
        week=00时周数算去年最后一周
        判断 date 类型来分别做处理(字符串日期和日期类型)
    :param date: 字符串日期,strptime方法 格式化规则
    :return: 返回值,日期对应周数
    '''
    week = ''
    if isinstance(date, str):
        week = datetime.datetime.strptime(date, '%Y%m%d').strftime('%W')
        if week == '00':
            year = datetime.datetime.strptime(date, '%Y%m%d').year - 1
            week = str(year) + '-52'
        else:
            week = datetime.datetime.strptime(date, '%Y%m%d').strftime('%Y-%W')
    elif isinstance(date, datetime.datetime):
        week = date.strftime('%W')
        if week == '00':
            year = date.year - 1
            week = str(year) + '-52'
        else:
            week = date.strftime('%Y-%W')
    else:
        raise ValueError('{} 需要包含(年月日),字符串日期或者日期格式'.format(date))
    return week
	
	
if __name__ == '__main__':
    list_date = ['20220101', '22221201', '20220222', '20221001', '20021101', '20220701']
    for date in list_date:
        week_cs = date_week(date)
        print(week_cs)