simpler increment of time values?

rurpy at yahoo.com rurpy at yahoo.com
Thu Jul 5 16:11:38 CEST 2012


On Wednesday, July 4, 2012 6:29:10 PM UTC-6, Vlastimil Brom wrote:
> Hi all,
> I'd like to ask about the possibilities to do some basic manipulation
> on timestamps - such as incrementing a given time (hour.minute -
> string) by some minutes.
> Very basic notion of "time" is assumed, i.e. dateless,
> timezone-unaware, DST-less etc.
> I first thought, it would be possible to just add a timedelta to a
> time object, but, it doesn't seem to be the case.
> 
> The code I came up with (using time and datetime modules) seems rather
> convoluted and I would like to ask about some possible more
> straightforward alternatives I missed.
> The equivalent function (lacking validation) without the (date)time
> libraries seems simple enough (for this limited and individual task).
> Although it is probably mostly throw-away code, which seems to do what
> I need, I'd be interested in better/more elegant... solutions.
> 
> # # #
> import time
> import datetime
> import re
> 
> print re.sub(r"^0","", (datetime.datetime(*list(time.strptime("8.45",
> "%H.%M"))[:6]) + datetime.timedelta(minutes=30)).strftime("%H.%M"))
> # 9.15
> 
> # # # # # # # # #
> 
> def add_minutes(hour_min_str, separator=".", minutes_to_add=0):
>     h, m = [int(s) for s in hour_min_str.split(separator)]
>     sum_minutes = h * 60 + m + minutes_to_add
>     h, m = divmod(sum_minutes, 60)
>     h = h % 24
>     return "%s%s%s" % (h, separator, m)
> 
> print add_minutes(hour_min_str="8.45", separator='.', minutes_to_add=30)
> # 9.15
> 
> # # # # # # # # #
> 
> Is it true, that timedelta cannot be used with dateless time values?
> (Is there some other possibility than the current one, where strptime
> actually infers 1. 1. 1900?)
> Is there some simpler way to adapt the incompatible output of strptime
> as the input of datetime?
> Is it possible to get one-digit hours formatted without the leading zero?
> 
> Thanks in advance for any suggestions or remarks;
>            regards,
>               Vlastimil Brom

If it's any consolation, I had to add a small constant time 
delta to all the times in a video subtitles file and my code
ended up looking very much like yours.  What should have take
five minutes to write took several hours,

I remain surprised and disappointed that doing something so
simple (read time text into time object, add timedelta, print 
result) was so awkward in Python.



More information about the Python-list mailing list