功能:获取日期对应的周数(一年算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)