Source code for powerline.selectors.common
from powerline.theme import layered_selector
from datetime import datetime, timezone
[docs]@layered_selector
def time(target_start_time, target_end_time, time_format = '%H:%M', time_zone = None):
'''Returns True if the current time to is between ``target_start_time`` and ``target_end_time``.
Times are to be specified in strftime-style format ``time_format``.
:param string target_start_time:
The (inclusive) start time.
:param string target_end_time:
The (exclusive) end time.
:param string time_format:
The strftime-style format to use for the given times.
:param string time_zone:
The time zone to use for the current time.
'''
try:
tz = datetime.strptime(time_zone, '%z').tzinfo if time_zone else None
except ValueError:
tz = None
def selector(pl, segment_info, mode):
nw = datetime.now(tz)
cur_time = datetime.strptime(nw.strftime(time_format), time_format)
return datetime.strptime(target_start_time, time_format) <= cur_time \
and cur_time < datetime.strptime(target_end_time, time_format)
return selector