resolvePeriod method
基于配置的时间区间解析当前 timeOfDay 属于上半程还是下半程
- 优先判断是否仅落在某一个半程区间内
- 若两个半程都包含或都不包含,则回退到原生的 TimeOfDay.period
Implementation
DayPeriod resolvePeriod(TimeOfDay timeOfDay) {
final int minutes = timeOfDay.hour * 60 + timeOfDay.minute;
final bool inFirst = _inRange(minutes, firstHalf.start, firstHalf.end);
final bool inSecond = _inRange(minutes, secondHalf.start, secondHalf.end);
if (inFirst && !inSecond) {
return DayPeriod.am;
} else if (inSecond && !inFirst) {
return DayPeriod.pm;
}
// 兜底:回退到系统的 12 点分界逻辑
return timeOfDay.period;
}