is_holiday方法:若是交易日 返回false;若不是交易日 返回true
https://www.zhihu.com/question/35835021
1 import tushare 2 import datetime 3 4 5 class AIOldData: 6 def ai_trading_day(self): 7 """ 8 功能1:判斷自然日是否是交易日(YES:返回此自然日;NO:從此自然日依次往前推至交易日 並返回) 9 缺點:要計算10秒左右才出結果 10 :return: 11 """ 12 date_str = "{}-{}-{}".format(self[0:4], self[4:6], self[6:8]) 13 y, m, d = date_str.split("-") 14 my_date = datetime.date(int(y), int(m), int(d)) 15 16 # 判斷日期是否是交易日 17 while True: 18 if tushare.is_holiday(datetime.date.strftime(my_date, "%Y-%m-%d")): 19 # 不是交易日 則此日期減一天 再次循環判斷 20 my_date = my_date + datetime.timedelta(days=-1) 21 else: 22 # 是交易日 23 break 24 print("離{}最近的一個歷史交易日為:{}".format(date_str, my_date)) 25 return my_date 26 27 28 if __name__ == "__main__": 29 ai_old_data = AIOldData 30 ai_old_data.ai_trading_day("20191007") 31 ai_old_data.ai_trading_day("20191008")
輸出:
離2019-10-07最近的一個歷史交易日為:2019-09-30
離2019-10-08最近的一個歷史交易日為:2019-10-08