{
"alarmId": "uuid",
"time": "07:30", // 本地時間 HH:mm
"timezone": "Asia/Shanghai", // IANA 時區標識符
"repeatDays": [1,3,5] // 1=周一 ... 7=周日,或位掩碼 0b1010100
}
timestamp 字段(需信任客戶端時間)。timezone 將時間戳轉換為該時區的 LocalDateTime。DayOfWeek(Java: localDate.getDayOfWeek(),Go: time.Weekday,Node: date.getDay())。DayOfWeek 是否在 repeatDays 列表中。timezone,定時任務按該時區觸發(Quartz CronTrigger 支持時區)。Java 8+:
ZonedDateTime now = Instant.now().atZone(ZoneId.of(alarm.getTimezone()));
if (alarm.getRepeatDays().contains(now.getDayOfWeek().getValue())) {
// 觸發
}