simpler increment of time values?
vlastimil.brom at gmail.com
Thu Jul 5 02:29:10 CEST 2012
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.
# # #
print re.sub(r"^0","", (datetime.datetime(*list(time.strptime("8.45",
"%H.%M"))[:6]) + datetime.timedelta(minutes=30)).strftime("%H.%M"))
# # # # # # # # #
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)
# # # # # # # # #
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;
More information about the Python-list