Skip to main content
`Ctrl`+`K`

# pandas.tseries.offsets.BusinessHour

class pandas.tseries.offsets.BusinessHour

  DateOffset subclass representing possibly n business hours.

  BusinessHour is a date offset that advances time by a number of business hours. By default, business hours are from 9:00 AM to 5:00 PM on weekdays. The `start` and `end` parameters can be used to customize the business hours window, and multiple intervals can be specified by passing lists.

  Attributes

  `n` | Return the count of the number of periods.
  `normalize` | Return boolean whether the frequency can align with midnight.
  `start` | Return the start time(s) of the business hour.
  `end` | Return the end time(s) of the business hour.
  `offset` | Return the time offset applied to the business day.

  See also

  `CustomBusinessHour`

    DateOffset subclass with custom weekmask and holidays.

  `BusinessDay`

    DateOffset subclass representing possibly n business days.

  Examples

  You can use the parameter `n` to represent a shift of n hours.

      >>> ts = pd.Timestamp(2022, 12, 9, 8)
      >>> ts + pd.offsets.BusinessHour(n=5)
      Timestamp('2022-12-09 14:00:00')

  You can also change the start and the end of business hours.

      >>> ts = pd.Timestamp(2022, 8, 5, 16)
      >>> ts + pd.offsets.BusinessHour(start="11:00")
      Timestamp('2022-08-08 11:00:00')

      >>> from datetime import time as dt_time
      >>> ts = pd.Timestamp(2022, 8, 5, 22)
      >>> ts + pd.offsets.BusinessHour(end=dt_time(19, 0))
      Timestamp('2022-08-08 10:00:00')

  Passing the parameter `normalize` equal to True, you shift the start of the next business hour to midnight.

      >>> ts = pd.Timestamp(2022, 12, 9, 8)
      >>> ts + pd.offsets.BusinessHour(normalize=True)
      Timestamp('2022-12-09 00:00:00')

  You can divide your business day hours into several parts.

      >>> import datetime as dt
      >>> freq = pd.offsets.BusinessHour(start=["06:00", "10:00", "15:00"],
      ...                                end=["08:00", "12:00", "17:00"])
      >>> pd.date_range(dt.datetime(2022, 12, 9), dt.datetime(2022, 12, 13), freq=freq)
      DatetimeIndex(['2022-12-09 06:00:00', '2022-12-09 07:00:00',
                     '2022-12-09 10:00:00', '2022-12-09 11:00:00',
                     '2022-12-09 15:00:00', '2022-12-09 16:00:00',
                     '2022-12-12 06:00:00', '2022-12-12 07:00:00',
                     '2022-12-12 10:00:00', '2022-12-12 11:00:00',
                     '2022-12-12 15:00:00', '2022-12-12 16:00:00'],
                     dtype='datetime64[us]', freq='bh')

  Attributes

  `base` | Returns a copy of the calling offset object with n=1 and all other attributes equal.
  `calendar` | Return the calendar used for business day calculations.
  `end` | Return the end time(s) of the business hour.
  `freqstr` | Return a string representing the frequency.
  `holidays` | Return the holidays used for custom business day calculations.
  `kwds` | Return a dict of extra parameters for the offset.
  `n` | Return the count of the number of periods.
  `name` | (DEPRECATED) Return a string representing the base frequency.
  `nanos` | Return an integer of the total number of nanoseconds.
  `normalize` | Return boolean whether the frequency can align with midnight.
  `offset` | Return the time offset applied to the business day.
  `rule_code` | Return a string representing the base frequency.
  `start` | Return the start time(s) of the business hour.
  `weekmask` | Return the weekmask used for custom business day calculations.

  Methods

  `copy`() | Return a copy of the frequency.
  `is_month_end`(ts) | Return boolean whether a timestamp occurs on the month end.
  `is_month_start`(ts) | Return boolean whether a timestamp occurs on the month start.
  `is_on_offset`(dt) | Return boolean whether a timestamp intersects with this frequency.
  `is_quarter_end`(ts) | Return boolean whether a timestamp occurs on the quarter end.
  `is_quarter_start`(ts) | Return boolean whether a timestamp occurs on the quarter start.
  `is_year_end`(ts) | Return boolean whether a timestamp occurs on the year end.
  `is_year_start`(ts) | Return boolean whether a timestamp occurs on the year start.
  `rollback`(other) | Roll provided date backward to next offset only if not on offset.
  `rollforward`(other) | Roll provided date forward to next offset only if not on offset.