[Tutor] timedelta, difference calculation

rail shafigulin rail.shafigulin at gmail.com
Thu Dec 15 18:52:39 CET 2011


On Mon, Dec 12, 2011 at 4:14 PM, Lie Ryan <lie.1296 at gmail.com> wrote:

> On 12/13/2011 06:46 AM, rail shafigulin wrote:
>
>> i found something interesting during the timedate difference calculation
>>
>> import datetime
>> import time
>>
>> def main():
>>   mydatetime = datetime.datetime.now()
>>   time.sleep(1)
>>   mydatetime2 = datetime.datetime.now()
>>   diff = mydatetime - mydatetime2
>>
>>   print(diff)
>>
>> if __name__ == '__main__':
>>   main()
>>
>> if you run this code the result you get will be
>> -1 day, 23:59:59
>>
>> at least that is what i'm getting.
>>
>> i was expecting to get -1 second. diff object is of type timedelta. this
>> kind of objects represent duration, at least that is what i understood
>> from the documentation
>> (http://docs.python.org/**release/3.1.3/library/**
>> datetime.html#timedelta-**objects<http://docs.python.org/release/3.1.3/library/datetime.html#timedelta-objects>
>> ).
>> so, is this a bug in the timedelta implementation or is it me not
>> understanding documentation properly?
>>
>
> It's due to timedelta normalization; in timedelta object only the day part
> is ever negative, you never had negative hour, minute, or second. The `-1
> day, 23:59:59` means to subtract 1 day, then add 23:59:59; therefore giving
> us -1 second.
>
> It is documented behavior, although perhaps hinted too subtly, from the
> docs:
>
> """
> Note that normalization of negative values may be surprising at first. For
> example,
>
> >>> from datetime import timedelta
> >>> d = timedelta(microseconds=-1)
> >>> (d.days, d.seconds, d.microseconds)
> (-1, 86399, 999999)
> """
>
> ______________________________**_________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/**mailman/listinfo/tutor<http://mail.python.org/mailman/listinfo/tutor>
>

Thanks. You are right about the "subtle" documentation.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111215/c1dc4a13/attachment.html>


More information about the Tutor mailing list