TimeView.swift 938 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //
  2. // TimeView.swift
  3. // MinimedKitUI
  4. //
  5. // Created by Pete Schwamb on 11/30/22.
  6. // Copyright © 2022 LoopKit Authors. All rights reserved.
  7. //
  8. import SwiftUI
  9. struct TimeView: View {
  10. let timeZone: TimeZone
  11. private let shortTimeFormatter: DateFormatter = {
  12. let formatter = DateFormatter()
  13. formatter.dateStyle = .none
  14. formatter.timeStyle = .short
  15. return formatter
  16. }()
  17. @State var currentDate = Date()
  18. let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
  19. var timeZoneString: String {
  20. shortTimeFormatter.timeZone = timeZone
  21. return shortTimeFormatter.string(from: currentDate)
  22. }
  23. var body: some View {
  24. Text(timeZoneString).onReceive(timer) { input in
  25. currentDate = input
  26. }
  27. }
  28. }
  29. struct TimeView_Previews: PreviewProvider {
  30. static var previews: some View {
  31. TimeView(timeZone: .current)
  32. }
  33. }