开发中遇到关于日期(节假日)的问题。具体情况:业务每天都会在系统中下载10张表,下载规则是今天下昨天的数据,意思就是下载时的查询条件日期那一栏应该写昨天的日期,但是有一个小问题,遇到周末就不能下昨天的数据了,会造成数据不准确,而是要下载上周六的数据,还有遇到节假日也是一样的,要从节假日开始那一天下载。
今天是10月8号,那么今天就应该下载10月1号的数据。大概就是这么个意思。代码实现:首先,需要维护一个节假日表(或者节假日参数),这里我是先获取到昨天的日期,然后在进行判断。具体如下:
import pandas as pd import datetime import time path = r"C:UsersDesktopholidays.xlsx" def read_date(path): # 读取日期列 data = pd.DataFrame(pd.read_excel(path)) raw_date = [] for i in data['日期']: raw_date.append(i) return raw_date def get_date(path): ''' 获取节假日的起始日期 :param path: 节假日表 :return: 节假日开始日期 ''' # 昨天的日期 # yesterday = (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime('%Y/%m/%d') yesterday = '2019/10/07' while True: timer = datetime.date.fromtimestamp(time.mktime(time.strptime(yesterday, '%Y/%m/%d'))) # 获取日期列表 date_list = read_date(path) if yesterday in date_list: # 日期减一天 yesterday = (timer + datetime.timedelta(days=-1)).strftime('%Y/%m/%d') else: # 日期加一天 yesterday = (timer + datetime.timedelta(days=1)).strftime('%Y/%m/%d') break print(yesterday) get_date(path)
注:我的日期表格式如下