Class Calendars

java.lang.Object
io.leandev.appfuse.calendar.Calendars

public final class Calendars extends Object

BusinessCalendar 的組合工廠(ADR-012)

應用層以 builder 宣告具名行事曆——底座(政府行事曆或全可選)疊加業務規則 (每週店休、非過去、前置天數、特例覆寫),組合邏輯只存在後端這一份:

BusinessCalendar delivery = Calendars.government(almanac.calendar())
        .closedOn(DayOfWeek.MONDAY)                       // 每週一店休 → CLOSED_WEEKLY
        .noPast()                                          // 非過去 → PAST
        .leadDays(2)                                       // 今天起 2 天內不可選 → LEAD_TIME
        .closed(LocalDate.of(2026, 8, 10), "STORE_EVENT")  // 特例休
        .open(LocalDate.of(2026, 7, 20))                   // 特例補開(覆寫所有規則)
        .build();

判定順序:特例覆寫(open / closed)→ 時間窗(noPast / leadDays / maxAdvance)→ 每週店休 → 自訂規則 → 底座(政府假日)。「今天」由 zone / clock 決定 (預設 Asia/Taipei,對齊 CalendarService;測試可注入固定 Clock)。

Since:
4.0
  • Field Details

  • Method Details