import calendar from datetime import timedelta, datetime, date import pandas as pd def filter_weekend(day): while calendar.weekday(day.year, day.month, day.day) in [5, 6]: day = day - timedelta(1) return pd.to_datetime(day) def next_workday(day): result = day while result == day or result.weekday() in [5, 6]: result = result + timedelta(1) return result def prev_workday(day): result = day while result == day or result.weekday() in [5, 6]: result = result - timedelta(1) return result def is_workday(day): return day.weekday() in range(5) def workday_range(start, end): return [datetime.combine(x.date(), datetime.min.time()) for x in pd.date_range(start, end) if is_workday(x)] def format_date(date, has_time=False): return date.strftime('%Y-%m-%d %H:%M:%S' if has_time else '%Y-%m-%d') def parse_date(date, has_time=False): return datetime.strptime(date, '%Y-%m-%d %H:%M:%S' if has_time else '%Y-%m-%d') def get_quarter_start(today=datetime.today()): result = date(today.year, today.month - (today.month - 1) % 3, 1) return datetime.combine(result, datetime.min.time()) if __name__ == '__main__': print(workday_range(datetime.today() - timedelta(1), datetime.today()))