Handling date rollover in same function
Very quick review.


No docstrings.
The code uses datetime.datetime.combine to make datetime.datetime objects representing the bounds, and then compares these with time_current. But it would be simpler to make datetime.time objects to represent the bounds, and then compare those with time_current.time.
Having done that, it would be simpler still if the function took a datetime.time object as its first argument, leaving it up to the caller to pass time_current.time if that's what's needed.
There's nothing about this code that is specific to alarms (it could be used for appointments, for example), so it would be easier to understand if the functionality were expressed abstractly.


Revised code:

import datetime

def time_in_range(time, start_hour, end_hour):
    """Return True if time (a datetime.time object) lies between
    start_hour and end_hour (inclusive).

    &gt;&gt;&gt; time_in_range(datetime.time(hour=12), 10, 14)
    True

    The range is allowed to span midnight:

    &gt;&gt;&gt; time_in_range(datetime.time(hour=0), 22, 2)
    True

    """
    start = datetime.time(hour=start_hour)
    end = datetime.time(hour=end_hour)
    if end &lt;= start: # Range spans midnight.
        return start &lt;= time or time &lt;= end
    else:
        return start &lt;= time &lt;= end