def indexer_between_time(self, start_time, end_time, include_start=True,<EOL>include_end=True):
start_time = tools.to_time(start_time)<EOL>end_time = tools.to_time(end_time)<EOL>time_micros = self._get_time_micros()<EOL>start_micros = _time_to_micros(start_time)<EOL>end_micros = _time_to_micros(end_time)<EOL>if include_start and include_end:<EOL><INDENT>lop = rop = operator.le<EOL><DEDENT>elif include_start:<EOL><INDENT>lop = operator.le<EOL>rop = operator.lt<EOL><DEDENT>elif include_end:<EOL><INDENT>lop = operator.lt<EOL>rop = operator.le<EOL><DEDENT>else:<EOL><INDENT>lop = rop = operator.lt<EOL><DEDENT>if start_time <= end_time:<EOL><INDENT>join_op = operator.and_<EOL><DEDENT>else:<EOL><INDENT>join_op = operator.or_<EOL><DEDENT>mask = join_op(lop(start_micros, time_micros),<EOL>rop(time_micros, end_micros))<EOL>return mask.nonzero()[<NUM_LIT:0>]<EOL>
Return index locations of values between particular times of day
(e.g., 9:00-9:30AM).

Parameters
----------
start_time, end_time : datetime.time, str
    datetime.time or string in appropriate format ("%H:%M", "%H%M",
    "%I:%M%p", "%I%M%p", "%H:%M:%S", "%H%M%S", "%I:%M:%S%p",
    "%I%M%S%p").
include_start : boolean, default True
include_end : boolean, default True

Returns
-------
values_between_time : array of integers

See Also
--------
indexer_at_time, DataFrame.between_time