>>> get_period_names(locale="de")[get_period_id(time(7, 42), locale="de")]
u'Morgen'
+ >>> get_period_id(time(0), locale="en_US")
+ u'midnight'
+
+ >>> get_period_id(time(0), type="selection", locale="en_US")
+ u'night1'
+
:param time: The time to inspect.
:param tzinfo: The timezone for the time. See ``format_time``.
:param type: The period type to use. Either "selection" or None.
for rule_id, rules in rulesets:
for rule in rules:
+ if "from" in rule and "before" in rule:
+ if rule["from"] < rule["before"]:
+ if rule["from"] <= seconds_past_midnight < rule["before"]:
+ return rule_id
+ else:
+ # e.g. from="21:00" before="06:00"
+ if rule["from"] <= seconds_past_midnight < 86400 or \
+ 0 <= seconds_past_midnight < rule["before"]:
+ return rule_id
+
start_ok = end_ok = False
if "from" in rule and seconds_past_midnight >= rule["from"]:
("de", time(3, 11), "night1"), # (after, before)
("fi", time(0), "midnight"), # (at)
("en_US", time(12), "noon"), # (at)
+ ("en_US", time(21), "night1"), # (from, before) across 0:00
+ ("en_US", time(5), "night1"), # (from, before) across 0:00
+ ("en_US", time(6), "morning1"), # (from, before)
("agq", time(10), "am"), # no periods defined
("agq", time(22), "pm"), # no periods defined
("am", time(14), "afternoon1"), # (before, after)