I get this strange result by substracting earlier time stamp for later one:
pd.to_datetime('2021-05-21 06:00:00') - pd.to_datetime('2021-05-21 06:02:00')
Timedelta('-1 days +23:58:00')
Timedelta('-0 days 00:02:00')
What is the correct way to calculate a negative time difference? Thank you!
Timedelta('-1 days +23:58:00') is the proper representation of a negative time difference in pandas (and also in pure python)
# using pure python from datetime import datetime datetime(2021,5,21,6,0,0) - datetime(2021,5,21,6,2,0) datetime.timedelta(days=-1, seconds=86280)
this is because the difference is properly calculated as
-120 seconds, but individual time elements cannot exceed their moduli. the timedelta components are normalized. To represent negative 2 minutes, a negative day & positive time component are used.
and days, seconds and microseconds are then normalized so that the representation is unique, with
- 0 <= microseconds < 1000000
- 0 <= seconds < 3600*24 (the number of seconds in one day)
- -999999999 <= days <= 999999999
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)
it is possible to retrieve the total seconds as a negative integer using the method