Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Построение окон календаря для пользователя user:
- now = now() - текущие дата и время в серверной временной зоне
- endOfToday = now.toTZ(user.tz).endOfDay() - 23:59 сегодняшнего для пользователя дня.
- endOf4thDay = endOfToday + 4d - конец 4го от сегодня дня в пользовательской временной зоне
- events = googleCalendar.events.fetch(from: now, to: endOf4thDay)
- Внимание: now здесь в серверной временной зоне, endOf4thDay - в пользовательской
- startOfToday = now.toTZ(user.tz).startOfDay() - 00:00 сегодняшнего для пользователя дня.
- let day = startOfToday - начало дня в таймзоне пользователя
- let windows = {} - сюда запишем окна
- while day < endOf4thDay:
- if !day.dayOfWeek.isWeekend:
- for (hour = user.startOfDay; hour < user.endOfDay; ++hour):
- let windowStart = day.setHour(hour)
- let windowEnd = day.setHour(hour + 1)
- if windowStart < now:
- continue
- let windowOpen = true
- for event in events:
- if (event.start <= windowStart && event.end > windowStart) ||
- (event.start < windowEnd && event.end >= windowEnd) ||
- (event.start >= windowStart && event.end <= windowEnd)):
- windowOpen = false
- break
- if windowOpen:
- let windowStartUTC = windowStart.toUTC
- windows[windowStartUTC.dateAsString].push(windowStartUTC.hourAsString)
- day += 1d
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement