Skip to content

Instantly share code, notes, and snippets.

@dejurin
Last active February 18, 2022 10:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dejurin/236b398dc4b8064685702a27a3df612b to your computer and use it in GitHub Desktop.
Save dejurin/236b398dc4b8064685702a27a3df612b to your computer and use it in GitHub Desktop.
Get start and end points for: week, month, quarter and year
from datetime import date
from dateutil.relativedelta import relativedelta
def start_end_day(sunmon: bool = True):
today = date.today()
curr_quarter = int((today.month - 1) / 3 + 1)
dayofweek = [today.weekday(),today.isoweekday()][sunmon]
week_start = today - relativedelta(days=dayofweek)
week_end = week_start + relativedelta(days=6)
month_start = date(today.year,today.month, 1)
month_end = month_start + relativedelta(months=1, days=-1)
quarter_start = date(today.year, 3 * curr_quarter - 2, 1)
quarter_end = quarter_start + relativedelta(months=3, days=-1)
year_start = date(today.year, 1, 1)
year_end = year_start + relativedelta(years=1, days=-1)
return ((week_start,week_end),(month_start,month_end),(quarter_start,quarter_end),(year_start,year_end))
print(start_end_day(True))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment