TimeZone.swift 861 B

1234567891011121314151617181920212223242526272829303132
  1. //
  2. // TimeZone.swift
  3. // OmniKitUI
  4. //
  5. // Created by Pete Schwamb on 3/19/23.
  6. // Copyright © 2023 LoopKit Authors. All rights reserved.
  7. //
  8. import Foundation
  9. extension TimeZone {
  10. static var currentFixed: TimeZone {
  11. return TimeZone(secondsFromGMT: TimeZone.current.secondsFromGMT())!
  12. }
  13. var fixed: TimeZone {
  14. return TimeZone(secondsFromGMT: secondsFromGMT())!
  15. }
  16. /// This only works for fixed utc offset timezones
  17. func scheduleOffset(forDate date: Date) -> TimeInterval {
  18. var calendar = Calendar.current
  19. calendar.timeZone = self
  20. let components = calendar.dateComponents([.day , .month, .year], from: date)
  21. guard let startOfSchedule = calendar.date(from: components) else {
  22. fatalError("invalid date")
  23. }
  24. return date.timeIntervalSince(startOfSchedule)
  25. }
  26. }