pub(crate) fn shift_months<D>(date: D, months: i32) -> Dwhere D: Datelike + Add<Months, Output = D> + Sub<Months, Output = D>,
Shift a date by the given number of months.