Skip to content

Commit c079963

Browse files
Fixing non-second timedelta64 bug
This fixes #1738
1 parent 4f1f4c0 commit c079963

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

parcels/tools/converters.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,18 @@ class TimeConverter:
5454
"""
5555

5656
def __init__(self, time_origin: float | np.datetime64 | np.timedelta64 | cftime.datetime = 0):
57-
self.time_origin = time_origin
5857
self.calendar: str | None = None
5958
if isinstance(time_origin, np.datetime64):
59+
self.time_origin = time_origin
6060
self.calendar = "np_datetime64"
6161
elif isinstance(time_origin, np.timedelta64):
62+
self.time_origin = time_origin.astype("timedelta64[s]")
6263
self.calendar = "np_timedelta64"
6364
elif isinstance(time_origin, cftime.datetime):
65+
self.time_origin = time_origin
6466
self.calendar = time_origin.calendar
67+
else:
68+
self.time_origin = time_origin
6569

6670
def reltime(self, time: TimeConverter | np.datetime64 | np.timedelta64 | cftime.datetime) -> float | npt.NDArray:
6771
"""Method to compute the difference, in seconds, between a time and the time_origin

tests/tools/test_converters.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ def test_TimeConverter_reltime_one_day():
4040
assert tc.reltime(time) == ONE_DAY
4141

4242

43+
def test_TimeConverter_timedelta64_float():
44+
ONE_DAY = 24 * 60 * 60
45+
tc = TimeConverter(np.timedelta64(0, "s"))
46+
assert tc.reltime(1 * ONE_DAY) == 1 * ONE_DAY
47+
48+
tc = TimeConverter(np.timedelta64(0, "D"))
49+
assert tc.reltime(1 * ONE_DAY) == 1 * ONE_DAY
50+
51+
tc = TimeConverter(np.timedelta64(0, "ns"))
52+
assert tc.reltime(1 * ONE_DAY) == 1 * ONE_DAY
53+
54+
4355
@pytest.mark.parametrize(
4456
"x, y",
4557
[

0 commit comments

Comments
 (0)