mycal.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/python3
  2. from datetime import datetime
  3. import sys
  4. def is_leap(year):
  5. return year % 4 == 0 and year % 100 != 0 or year % 400 == 0
  6. def get_days(year, month):
  7. days = [[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
  8. [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]]
  9. return days[is_leap(year)][month - 1]
  10. def main():
  11. if len(sys.argv) > 1:
  12. month = int(sys.argv[1])
  13. year = int(sys.argv[2])
  14. else:
  15. current_date = datetime.now()
  16. year = current_date.year
  17. month = current_date.month
  18. year2 = year if month >= 3 else year - 1
  19. c = year2 // 100
  20. y = year2 % 100
  21. m = month if month >= 3 else month + 12
  22. w = y + y // 4 + c // 4 - 2 * c + 26 * (m + 1) // 10
  23. w %= 7
  24. months = ['January', 'February', 'March', 'April', 'May', 'June',
  25. 'July', 'August', 'September', 'October', 'November', 'December']
  26. print(f'{months[month - 1]} {year}'.center(20))
  27. print('Su Mo Tu We Th Fr Sa')
  28. print(' ' * 3 * w, end='')
  29. total_days = get_days(year, month)
  30. for day in range(1, total_days + 1):
  31. print(f'{day}'.rjust(2), end=' ')
  32. w += 1
  33. if w == 7:
  34. print()
  35. w = 0
  36. print()
  37. if __name__ == '__main__':
  38. main()