code_junkie

Python - easy way to add N seconds to a datetime.time?

Nov 11th, 2011
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. >>> datetime.time(11, 34, 59) + 3
  2. TypeError: unsupported operand type(s) for +: 'datetime.time' and 'int'
  3. >>> datetime.time(11, 34, 59) + datetime.timedelta(0, 3)
  4. TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'
  5. >>> datetime.time(11, 34, 59) + datetime.time(0, 0, 3)
  6. TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.time'
  7.  
  8. def add_secs_to_time(timeval, secs_to_add):
  9. secs = timeval.hour * 3600 + timeval.minute * 60 + timeval.second
  10. secs += secs_to_add
  11. return datetime.time(secs // 3600, (secs % 3600) // 60, secs % 60)
  12.  
  13. import datetime
  14. a = datetime.datetime(1,1,1,11,34,59)
  15. b = a + datetime.timedelta(0,3) # days, seconds, then other fields.
  16. print a.time()
  17. print b.time()
  18.  
  19. 11:34:59
  20. 11:35:02
  21.  
  22. b = a + datetime.timedelta(seconds=3)
  23.  
  24. import datetime
  25.  
  26. def addSecs (tm,secs):
  27. fulldate = datetime.datetime(1,1,1,tm.hour,tm.minute,tm.second)
  28. fulldate = fulldate + datetime.timedelta(0,3)
  29. return fulldate.time()
  30.  
  31. a = datetime.datetime.now().time()
  32. b = addSecs (a,300)
  33. print a
  34. print b
  35.  
  36. 16:38:04.314204
  37. 16:43:04
  38.  
  39. sometime = get_some_time() # the time to which you want to add 3 seconds
  40. later = (datetime.combine(date.today(), sometime) + timedelta(seconds=3)).time()
  41.  
  42. def add_secs_to_time(timeval, secs_to_add):
  43. dummy_date = datetime.date(1, 1, 1)
  44. full_datetime = datetime.datetime.combine(dummy_date, timeval)
  45. added_datetime = full_datetime + datetime.timedelta(seconds=secs_to_add)
  46. return added_datetime.time()
  47.  
  48. (datetime.datetime.combine(datetime.date(1, 1, 1), timeval) + datetime.timedelta(seconds=secs_to_add)).time()
  49.  
  50. >>> b = a + datetime.timedelta(seconds=3000)
  51. >>> b
  52. datetime.datetime(1, 1, 1, 12, 24, 59)
  53.  
  54. >>> import datetime
  55. >>> import nptime
  56. >>> nptime.nptime(11, 34, 59) + datetime.timedelta(0, 3)
  57. nptime(11, 35, 2)
Add Comment
Please, Sign In to add comment