classification
Title: timedelta produced by datetime.__sub__ does not take Daylight Savings Time into account
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 3.7, Python 3.6, Python 3.3, Python 3.4, Python 3.5
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: JoshuaRLi, r.david.murray
Priority: normal Keywords:

Created on 2017-08-10 02:04 by JoshuaRLi, last changed 2017-08-10 04:02 by r.david.murray. This issue is now closed.

Messages (2)
msg300035 - (view) Author: Joshua Li (JoshuaRLi) * Date: 2017-08-10 02:04
See my SO answer and the corresponding question for detail: https://stackoverflow.com/a/45602760/5348393

Essentially, given two datetime.datetime instances t1 and t2, the following two syntactically different lines of code should be logically equivalent, but in fact differ by plus or minus one hour on Daylight Savings Time dates because `datetime.datetime.__sub__` does not appear to take DST into account.

`t1.timestamp()-t2.timestamp()`
`(t1-t2).total_seconds()`

I am not sure if this is by intentional design, or a behavioral bug.
msg300040 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2017-08-10 04:02
It is by design.  Read the footnote associated with the subtraction opertion on datetimes: after subtraction date2 + timedelta = date1, which implies that the subtraction ignores daylight savings transitions, since the addition does ("Note that no time zone adjustments are done even if the input is an aware object").

Perhaps the reason why it is designed this way is menioned in the PEP; I haven't looked.
History
Date User Action Args
2017-08-10 04:02:18r.david.murraysetstatus: open -> closed

nosy: + r.david.murray
messages: + msg300040

resolution: not a bug
stage: resolved
2017-08-10 02:04:40JoshuaRLicreate