StatsDateRange.swift 735 B

123456789101112131415161718
  1. // LoopFollow
  2. // StatsDateRange.swift
  3. import Foundation
  4. enum StatsDateRange {
  5. /// Returns start/end dates for the last complete N-day period.
  6. /// End is 23:59:59 of yesterday; start is 00:00:00 of the day N days back.
  7. static func lastComplete(days: Int) -> (start: Date, end: Date) {
  8. let calendar = dateTimeUtils.displayCalendar()
  9. let startOfToday = calendar.startOfDay(for: Date())
  10. let end = calendar.date(byAdding: .second, value: -1, to: startOfToday) ?? Date()
  11. let endDayStart = calendar.startOfDay(for: end)
  12. let start = calendar.date(byAdding: .day, value: -(days - 1), to: endDayStart) ?? endDayStart
  13. return (start: calendar.startOfDay(for: start), end: end)
  14. }
  15. }