QST: Why does pandas DateOffset.rollback() not work the way I expect it to with days / hours?
### 

- [X] I have searched the [[pandas] tag](https://stackoverflow.com/questions/tagged/pandas) on StackOverflow for similar questions.

- [X] I have asked my usage related question on [StackOverflow](https://stackoverflow.com).


### Link to question on StackOverflow

https://stackoverflow.com/questions/69345845/why-does-pandas-dateoffset-rollback-not-work-the-way-i-expect-it-to-with-days

### Question about pandas

I'm trying to move an arbitrary input `pd.Timestamp` back to the correct start offset unless it is already on offset. 

The following code works with `BusinessMonthEnd`, `MonthEnd`, `MonthStart`, and so on:

```python
import pandas as pd
from pandas.tseries.offsets import *


def to_start(t: pd.Timestamp, freq: pd.DateOffset) -> pd.Timestamp:
    return freq.rollback(t)


assert to_start(pd.to_datetime("2021-09-27"), MonthEnd()) == pd.to_datetime("2021-08-31")
assert to_start(pd.to_datetime("2021-09-27"), MonthBegin()) == pd.to_datetime("2021-08-31")
assert to_start(pd.to_datetime("2021-08-27"), BMonthEnd()) == pd.to_datetime("2021-07-30")
assert to_start(pd.to_datetime("2021-08-27"), YearBegin()) == pd.to_datetime("2021-01-01")
assert to_start(pd.to_datetime("2021-08-27"), BYearBegin()) == pd.to_datetime("2021-01-01")

# also it works nicely with holiday calendars
from pandas.tseries.holiday import USFederalHolidayCalendar

us_fed_biz_days = CustomBusinessDay(calendar=USFederalHolidayCalendar())
memorial_day = pd.to_datetime("2021-05-31")
the_friday_before_memorial_day = pd.to_datetime("2021-05-28")
assert to_start(memorial_day, us_fed_biz_days) == the_friday_before_memorial_day
```

However (and this is driving me crazy) it doesn't seem to work for `Day`, `BusinessDay`, `Week`, `Hour` etc:

```python
assert to_start(pd.to_datetime("2021-08-27 05:00"), Day()) == pd.to_datetime("2021-08-27")
assert to_start(pd.to_datetime("2021-08-27 05:00"), BDay()) == pd.to_datetime("2021-08-27")
assert to_start(pd.to_datetime("2021-08-27 05:15"), Hour()) == pd.to_datetime("2021-08-27 05:00")
assert to_start(pd.to_datetime("2021-08-26"), pd.tseries.frequencies.to_offset("W-MON")) == pd.to_datetime("2021-08-24")
```

I have also tried this:

```python
def to_start(t: pd.Timestamp, freq: pd.DateOffset) -> pd.Timestamp:
        return pd.Period(t, freq=freq).start_time
```

which ironically works with the second set of assertions but not the first.

Is my expectation of the above assertions not failing unreasonable, and if so what am I missing, please?