| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- //
- // TimeView.swift
- // MockKitUI
- //
- // Created by Nathaniel Hamming on 2023-06-01.
- // Copyright © 2023 LoopKit Authors. All rights reserved.
- //
- import SwiftUI
- import LoopKitUI
- struct TimeView: View {
- @State private var currentDate = Date()
- let timeOffset: TimeInterval
- let timeZone: TimeZone
-
- let label: String
- private let shortTimeFormatter: DateFormatter = {
- let formatter = DateFormatter()
- formatter.dateStyle = .none
- formatter.timeStyle = .short
- return formatter
- }()
- private var timeToDisplay: Date {
- currentDate.addingTimeInterval(timeOffset)
- }
- private let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
- private var timeZoneString: String {
- shortTimeFormatter.timeZone = timeZone
- return shortTimeFormatter.string(from: timeToDisplay)
- }
-
- init(timeOffset: TimeInterval = 0, timeZone: TimeZone = .current, label: String = "") {
- self.timeOffset = timeOffset
- self.timeZone = timeZone
- self.label = label
- }
- var body: some View {
- LabeledValueView(label: label, value: timeZoneString).onReceive(timer) { input in
- currentDate = input
- }
- }
- }
- struct TimeView_Previews: PreviewProvider {
- static var previews: some View {
- TimeView(timeOffset: 0, timeZone: .current, label: "Current Time")
- }
- }
|