fork download
  1. # [x] PEP8 check
  2.  
  3. from datetime import datetime
  4.  
  5. aymd = datetime(2019, 7, 18, 12, 30, 45)
  6.  
  7.  
  8. def getWeekDay(adate):
  9. return (adate.weekday() + 1) % 7 # for 0:Sunday[Delphi]
  10.  
  11.  
  12. def getYearDay(adate):
  13. return (adate.timetuple().tm_yday)
  14.  
  15.  
  16. def dispCal(alist):
  17. for idx in range(len(alist)):
  18. print(alist[idx], end='')
  19. if idx % 7 == 6:
  20. print() # CRLF
  21.  
  22. # 1. preparation -------------------------
  23. NUM_YEAR = 366 # maximum number of days in a year (including leap-year)
  24. yrs = [[]]*NUM_YEAR
  25. for idx in range(NUM_YEAR):
  26. yrs[idx] = 0
  27. yrs[getYearDay(datetime(2019, 1, 1, 0, 0, 0))] = 1 # Jan
  28. yrs[getYearDay(datetime(2019, 2, 1, 0, 0, 0))] = 1 # Feb.
  29. yrs[getYearDay(datetime(2019, 3, 1, 0, 0, 0))] = 1 # Mar.
  30. NUM_MONTH = 37 # 6 lines in calendar ( 7 * 5 lines + 2 [30, 31 days])
  31. mts = [[]]*NUM_MONTH
  32. for idx in range(NUM_MONTH):
  33. mts[idx] = 0
  34.  
  35. # 2. main part -------------------------
  36.  
  37. adt = datetime(2019, 2, 1, 0, 0, 0) # ymdhns
  38.  
  39. awday = getWeekDay(adt)
  40. ayday = getYearDay(adt)
  41.  
  42. for idx in range(31): # 31: maximum for one month
  43. mts[awday + idx] = yrs[ayday + idx]
  44.  
  45. print('Feb')
  46. dispCal(mts)
  47.  
Success #stdin #stdout 0.02s 27968KB
stdin
Standard input is empty
stdout
Feb
0000010
0000000
0000000
0000000
0000010
00