diff --git a/esmvalcore/preprocessor/_time.py b/esmvalcore/preprocessor/_time.py index 529c044759..368815628c 100644 --- a/esmvalcore/preprocessor/_time.py +++ b/esmvalcore/preprocessor/_time.py @@ -86,7 +86,7 @@ def extract_time(cube, start_year, start_month, start_day, end_year, end_month, t_1 = time_units.date2num(start_date) t_2 = time_units.date2num(end_date) constraint = iris.Constraint( - time=lambda t: t_1 < time_units.date2num(t.point) < t_2) + time=lambda t: t_1 <= time_units.date2num(t.point) < t_2) cube_slice = cube.extract(constraint) if cube_slice is None: diff --git a/tests/unit/preprocessor/_time/test_time.py b/tests/unit/preprocessor/_time/test_time.py index 66685ed9d9..660284eef5 100644 --- a/tests/unit/preprocessor/_time/test_time.py +++ b/tests/unit/preprocessor/_time/test_time.py @@ -79,6 +79,24 @@ def test_extract_time(self): np.arange(1, 13, 1), sliced.coord('month_number').points) + def test_extract_time_limit(self): + """Test extract time when limits are included""" + cube = Cube(np.arange(0, 720), var_name='co2', units='J') + cube.add_dim_coord( + iris.coords.DimCoord( + np.arange(0., 720., 1.), + standard_name='time', + units=Unit( + 'days since 1950-01-01 00:00:00', calendar='360_day' + ), + ), + 0, + ) + sliced = extract_time(cube, 1950, 1, 1, 1951, 1, 1) + assert_array_equal( + np.arange(0, 360), + sliced.coord('time').points) + def test_extract_time_no_slice(self): """Test fail of extract_time.""" with self.assertRaises(ValueError):