Advertisement
doanhtu

Time Simplified

Sep 17th, 2018
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.67 KB | None | 0 0
  1. # time_convert.py
  2. import datetime
  3.  
  4.  
  5. def parse_input(time):
  6.     try:
  7.         data = time.split(':')
  8.         return tuple(data[:3])
  9.     except Exception as e:
  10.         print(e)
  11.         print("Wrong input format")
  12.  
  13.  
  14. def generate(date_time):
  15.     minutes, seconds = divmod(date_time.seconds, 60)
  16.     hours, minutes = divmod(minutes, 60)
  17.     return hours, minutes, seconds
  18.  
  19.  
  20. def time_converter(time):
  21.     hour, minute, second = parse_input(time)
  22.     total_second = int(hour) * 60 * 60 + int(minute) * 60 + int(second)
  23.     d = datetime.timedelta(seconds=total_second)
  24.     if d.days > 0:
  25.         h, m, s = generate(d)
  26.         result = "{}:{}:{}:{}:".format(d.days, h, m, s)
  27.     elif d.days < 0:
  28.         d = datetime.timedelta(86400) - d
  29.         h, m, s = generate(d)
  30.         result = "-{}:{}:{}:".format(h, m, s)
  31.     else:
  32.         h, m, s = generate(d)
  33.         if h == 0 and m == 0:
  34.             result = "0:"
  35.         else:
  36.             result = "{}:{}:{}:".format(h, m, s)
  37.     print(result)
  38.     return result
  39.  
  40. --------------------------------------------------
  41. # test_time_convert.py
  42. from time_convert import time_converter
  43.  
  44. def test():
  45.     assert time_converter('1:2:3:') == '1:2:3:'
  46.     assert time_converter('1:2:90:') == '1:3:30:'
  47.     assert time_converter('1:2:-90:') == '1:0:30:'
  48.     assert time_converter('48:0:0:') == '2:0:0:0:'
  49.     assert time_converter('0:0:0:') == '0:'
  50.     assert time_converter('0:2:-120:') == '0:'
  51.     assert time_converter('1:-300:2:') == '-3:59:58:'
  52.  
  53.  
  54. if __name__ == '__main__':
  55.     test()
  56.  
  57.  
  58. ---------------------------------------------------
  59. $ python test_time_convert.py
  60. 1:2:3:
  61. 1:3:30:
  62. 1:0:30:
  63. 2:0:0:0:
  64. 0:
  65. 0:
  66. -3:59:58:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement