fork download
  1. from datetime import date
  2. from calendar import monthrange
  3.  
  4.  
  5. def date_a_month_ago(today):
  6. x = today.month - 1
  7. previous_month = 12 if x == 0 else x
  8. year = today.year - 1 if x == 0 else today.year
  9. last_day_of_previous_month = monthrange(year, previous_month)[1]
  10. day = last_day_of_previous_month if today.day > last_day_of_previous_month else today.day
  11. return date(year, previous_month, day)
  12.  
  13.  
  14. # Tests
  15. print(date_a_month_ago(date(2021, 11, 1)))
  16. print(date_a_month_ago(date(2021, 1, 31)))
  17. print(date_a_month_ago(date(2021, 12, 31)))
  18. print(date_a_month_ago(date(2021, 3, 29)))
  19. print(date_a_month_ago(date(2020, 3, 29)))
  20. print(date_a_month_ago(date(2021, 3, 30)))
  21. print(date_a_month_ago(date(2020, 3, 30)))
  22.  
Success #stdin #stdout 0.01s 7996KB
stdin
Standard input is empty
stdout
2021-10-01
2020-12-31
2021-11-30
2021-02-28
2020-02-29
2021-02-28
2020-02-29