resolvePeriod method

DayPeriod resolvePeriod(
  1. TimeOfDay timeOfDay
)

基于配置的时间区间解析当前 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;
}