|
3 | 3 |
|
4 | 4 | from pandas._libs.tslibs.timedeltas import delta_to_nanoseconds
|
5 | 5 |
|
6 |
| -from pandas import Timedelta, offsets |
| 6 | +from pandas import Timedelta, offsets, Timestamp |
7 | 7 |
|
8 | 8 |
|
9 | 9 | @pytest.mark.parametrize(
|
@@ -34,3 +34,41 @@ def test_huge_nanoseconds_overflow():
|
34 | 34 | # GH 32402
|
35 | 35 | assert delta_to_nanoseconds(Timedelta(1e10)) == 1e10
|
36 | 36 | assert delta_to_nanoseconds(Timedelta(nanoseconds=1e10)) == 1e10
|
| 37 | + |
| 38 | + |
| 39 | +class TestComputingDeltasWithTimezoneDifferences: |
| 40 | + def test_fails_to_subtract_when_one_date_is_naive(self): |
| 41 | + time1 = Timestamp("2020-10-28 22:08:00-04:00") |
| 42 | + time2 = Timestamp("2020-10-28 22:08:00") |
| 43 | + |
| 44 | + msg = ( |
| 45 | + "Cannot compute time difference between " |
| 46 | + "timezone-aware and naive datetime values." |
| 47 | + ) |
| 48 | + with pytest.raises(TypeError, match=msg): |
| 49 | + time1 - time2 |
| 50 | + |
| 51 | + with pytest.raises(TypeError, match=msg): |
| 52 | + time2 - time1 |
| 53 | + |
| 54 | + def test_subtracts_dates_of_different_timezones(self): |
| 55 | + time1 = Timestamp("2020-10-28 22:08:00-04:00") |
| 56 | + time2 = Timestamp("2020-10-28 22:08:00-00:00") |
| 57 | + |
| 58 | + assert time1 - time2 == Timedelta("0 days 04:00:00") |
| 59 | + |
| 60 | + def test_subtracts_dates_of_different_types(self): |
| 61 | + """ Github issue 31793 """ |
| 62 | + |
| 63 | + time1 = Timestamp("2020-10-28 22:08:00-04:00") |
| 64 | + time2 = Timestamp("2020-10-28 22:08:00-00:00").to_pydatetime() |
| 65 | + |
| 66 | + assert time1 - time2 == Timedelta("0 days 04:00:00") |
| 67 | + assert time2 - time1 == Timedelta("-1 days +20:00:00") |
| 68 | + |
| 69 | + def test_subtracts_dates_that_are_both_naive(self): |
| 70 | + time1 = Timestamp("2020-10-28 22:08:00") |
| 71 | + time2 = Timestamp("2020-10-28 22:29:00") |
| 72 | + |
| 73 | + assert time1 - time2 == Timedelta("-21 minutes") |
| 74 | + assert time2 - time1 == Timedelta("21 minutes") |
0 commit comments