import datetime class DateTool: @staticmethod def offset(date_format, offset_type, count, data=None): """ 日期偏移(前N天、后N天) @param date_format: 格式(如:%Y-%m-%d %H:%M:%S) @param offset_type: 偏移類型(Q-向前偏移 即前N天,H-向后偏移 即后N天) @param count: 偏移天數 @param data: 偏移基准日期(如:2020-11-14 19:48:51) 若為None則當前日期 @return: 偏移后的日期 """ # 時間加減 # 獲取當前日期 if data is None: data = datetime.datetime.now().strftime(date_format) # 將時間字符串轉換為 datetime 格式的時間 today = datetime.datetime.strptime(data, date_format) # 計算偏移量 if offset_type == 'Q': offset = datetime.timedelta(days=-count) elif offset_type == 'H': offset = datetime.timedelta(days=+count) else: print(f'偏移類型錯誤,預期:“Q”或“H”,實際:{offset_type}') # 獲取修改后的時間並格式化 re_date = (today + offset).strftime(date_format) return re_date if __name__ == '__main__': print(DateTool.offset('%Y%m%d', 'Q', 3)) # 20210823 (備注:今天是8.26日) print(DateTool.offset('%Y%m%d', 'H', 3, '20210829')) # 20210901