diff --git a/course/reset_form.php b/course/reset_form.php index 4c649079743..33229576d14 100644 --- a/course/reset_form.php +++ b/course/reset_form.php @@ -186,7 +186,7 @@ class course_reset_form extends moodleform { $coursedata['enddate'] = $data['reset_end_date']; } else if ($data['reset_start_date'] > 0 && $course->enddate != 0) { // Otherwise, if the current course enddate is set, reset_course_userdata will add the start date time shift to it. - $timeshift = $data['reset_start_date'] - usergetmidnight($course->startdate); + $timeshift = $data['reset_start_date'] - $course->startdate; $coursedata['enddate'] = $course->enddate + $timeshift; } else { $coursedata['enddate'] = $course->enddate; diff --git a/course/tests/courselib_test.php b/course/tests/courselib_test.php index 729a81913fb..8303ef6da09 100644 --- a/course/tests/courselib_test.php +++ b/course/tests/courselib_test.php @@ -3696,7 +3696,16 @@ final class courselib_test extends advanced_testcase { $time + YEARSECS, $time + WEEKSECS, $time + YEARSECS - ] + ], + // Time shift is between exact times, not midnight(s) (MDL-65233). + [ + $time + HOURSECS, + $time + DAYSECS, + $time + WEEKSECS + HOURSECS, + false, + $time + WEEKSECS + HOURSECS, + $time + WEEKSECS + DAYSECS, + ], ]; } diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 70992a93302..73c4ce0d6da 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -5060,8 +5060,7 @@ function reset_course_userdata($data) { // Calculate the time shift of dates. if (!empty($data->reset_start_date)) { - // Time part of course startdate should be zero. - $data->timeshift = $data->reset_start_date - usergetmidnight($data->reset_start_date_old); + $data->timeshift = $data->reset_start_date - $data->reset_start_date_old; } else { $data->timeshift = 0; }