Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. Построение окон календаря для пользователя user:
  2. now = now() - текущие дата и время в серверной временной зоне
  3. endOfToday = now.toTZ(user.tz).endOfDay() - 23:59 сегодняшнего для пользователя дня.
  4. endOf4thDay = endOfToday + 4d - конец 4го от сегодня дня в пользовательской временной зоне
  5. events = googleCalendar.events.fetch(from: now, to: endOf4thDay)
  6. Внимание: now здесь в серверной временной зоне, endOf4thDay - в пользовательской
  7.  
  8. startOfToday = now.toTZ(user.tz).startOfDay() - 00:00 сегодняшнего для пользователя дня.
  9.  
  10. let day = startOfToday - начало дня в таймзоне пользователя
  11. let windows = {} - сюда запишем окна
  12. while day < endOf4thDay:
  13. if !day.dayOfWeek.isWeekend:
  14. for (hour = user.startOfDay; hour < user.endOfDay; ++hour):
  15. let windowStart = day.setHour(hour)
  16. let windowEnd = day.setHour(hour + 1)
  17. if windowStart < now:
  18. continue
  19.  
  20. let windowOpen = true
  21. for event in events:
  22. if (event.start <= windowStart && event.end > windowStart) ||
  23. (event.start < windowEnd && event.end >= windowEnd) ||
  24. (event.start >= windowStart && event.end <= windowEnd)):
  25. windowOpen = false
  26. break
  27.  
  28. if windowOpen:
  29. let windowStartUTC = windowStart.toUTC
  30. windows[windowStartUTC.dateAsString].push(windowStartUTC.hourAsString)
  31. day += 1d
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement