mycal.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 main():
  7. if len(sys.argv) == 3:
  8. month = int(sys.argv[1])
  9. year = int(sys.argv[2])
  10. else:
  11. now = datetime.now()
  12. date = now.date
  13. month = now.month
  14. year = now.year
  15. m, y = (month, year) if month >= 3 else (month + 12, year - 1)
  16. c, y = y // 100, y % 100
  17. w = (y + y // 4 + c // 4 - 2 * c + 26 * (m + 1) // 10) % 7
  18. month_words = [
  19. 'January', 'February', 'March', 'April', 'May', 'June',
  20. 'July', 'August', 'September', 'October', 'November', 'December'
  21. ]
  22. print(f'{month_words[month - 1]} {year}'.center(20))
  23. print('Su Mo Tu We Th Fr Sa')
  24. print(' ' * 3 * w, end='')
  25. days = [
  26. [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
  27. [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  28. ][is_leap(year)][month - 1]
  29. for day in range(1, days + 1):
  30. print(str(day).rjust(2), end=' ')
  31. w += 1
  32. if w == 7:
  33. print()
  34. w = 0
  35. print()
  36. if __name__ == '__main__':
  37. main()