time.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import time
  2. DAYS_PER_MONTH = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  3. def is_leap(year):
  4. return (year % 4) == 0
  5. def test():
  6. seconds = 0
  7. wday = 5 # Jan 1, 2000 was a Saturday
  8. for year in range(2000, 2049):
  9. print("Testing %d" % year)
  10. yday = 1
  11. for month in range(1, 13):
  12. if month == 2 and is_leap(year):
  13. DAYS_PER_MONTH[2] = 29
  14. else:
  15. DAYS_PER_MONTH[2] = 28
  16. for day in range(1, DAYS_PER_MONTH[month] + 1):
  17. secs = time.mktime((year, month, day, 0, 0, 0, 0, 0))
  18. if secs != seconds:
  19. print("mktime failed for %d-%02d-%02d got %d expected %d" % (year, month, day, secs, seconds))
  20. tuple = time.localtime(seconds)
  21. secs = time.mktime(tuple)
  22. if secs != seconds:
  23. print("localtime failed for %d-%02d-%02d got %d expected %d" % (year, month, day, secs, seconds))
  24. return
  25. seconds += 86400
  26. if yday != tuple[7]:
  27. print("locatime for %d-%02d-%02d got yday %d, expecting %d" % (year, month, day, tuple[7], yday))
  28. return
  29. if wday != tuple[6]:
  30. print("locatime for %d-%02d-%02d got wday %d, expecting %d" % (year, month, day, tuple[6], wday))
  31. return
  32. yday += 1
  33. wday = (wday + 1) % 7
  34. def spot_test(seconds, expected_time):
  35. actual_time = time.localtime(seconds)
  36. for i in range(len(actual_time)):
  37. if actual_time[i] != expected_time[i]:
  38. print("time.localtime(", seconds, ") returned", actual_time, "expecting", expected_time)
  39. return
  40. print("time.localtime(", seconds, ") returned", actual_time, "(pass)")
  41. test()
  42. spot_test( 0, (2000, 1, 1, 0, 0, 0, 5, 1))
  43. spot_test( 1, (2000, 1, 1, 0, 0, 1, 5, 1))
  44. spot_test( 59, (2000, 1, 1, 0, 0, 59, 5, 1))
  45. spot_test( 60, (2000, 1, 1, 0, 1, 0, 5, 1))
  46. spot_test( 3599, (2000, 1, 1, 0, 59, 59, 5, 1))
  47. spot_test( 3600, (2000, 1, 1, 1, 0, 0, 5, 1))
  48. spot_test( -1, (1999, 12, 31, 23, 59, 59, 4, 365))
  49. spot_test( 447549467, (2014, 3, 7, 23, 17, 47, 4, 66))
  50. spot_test( -940984933, (1970, 3, 7, 23, 17, 47, 5, 66))
  51. spot_test(-1072915199, (1966, 1, 1, 0, 0, 1, 5, 1))
  52. spot_test(-1072915200, (1966, 1, 1, 0, 0, 0, 5, 1))
  53. spot_test(-1072915201, (1965, 12, 31, 23, 59, 59, 4, 365))
  54. t1 = time.time()
  55. time.sleep(2)
  56. t2 = time.time()
  57. print(abs(time.ticks_diff(t1, t2) -2) <= 1)
  58. t1 = time.ticks_ms()
  59. time.sleep_ms(50)
  60. t2 = time.ticks_ms()
  61. print(abs(time.ticks_diff(t1, t2)- 50) <= 1)
  62. t1 = time.ticks_us()
  63. time.sleep_us(1000)
  64. t2 = time.ticks_us()
  65. print(time.ticks_diff(t1, t2) < 1500)
  66. print(time.ticks_diff(time.ticks_cpu(), time.ticks_cpu()) < 16384)