Hi!
I want to fetch current date in format "HH" and convert it to Int so that i can use it in calculations. I have managed to set the current date to update regularly, and format it to "HH" in a string, but now I am stuck... I need the number of hours between 06:00 -> now, but if now<10 i need number of hours between 06:00 yesterday -> now.
Any help is much appreciated!
import SwiftUI
import Foundation
struct ContentView: View {
@State var date = Date()
@State var vekt = Int(70)
@State var temp = Double(37.0)
@State var infusjon = Int(0)
@State var medVaske = Int(0)
@State var sag = Int(0)
@State var blodning = Int(0)
@State var urin = Int(0)
var sagIn: Int{sag*250}
var totIn: Int{infusjon+medVaske+(sag*250)}
var totUt: Int{urin+blodning}
var totUtKorr: Int{urin+(blodning*3)}
var body: some View {
ScrollView{
VStack{
Text("Væskebalanse") .font(.title)
Text(timeString(date: date)).onAppear(perform: {let _ = self.updateTimer})
}
}
}
var timeFormat: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "HH"
return formatter
}
func timeString(date: Date) -> String {
let time = timeFormat.string(from: date)
return time
}
var updateTimer: Timer {
Timer.scheduledTimer(withTimeInterval: 1, repeats: true,
block: {_ in
self.date = Date()
})
}
//----HOW TO??-----let klokke = Int(timeString(date: String))
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Why don't you do it as you describe?
struct ContentView: View {
@State var date: Date = Date()
//@State...
//var...
let timer = Timer.publish(every: 1, on: .main, in: .common)
.autoconnect()
var body: some View {
ScrollView{
VStack{
Text("Væskebalanse")
.font(.title)
Text(timeString(date: date))
}
}
.onReceive(timer) {_ in
self.date = Date()
let hh = timeString(date: self.date)
let now = Int(hh)!
let hoursSince0600: Int
if now < 10 {
//number of hours between 06:00 yesterday -> now
hoursSince0600 = now + (24-6)
} else {
//number of hours between 06:00 -> now
hoursSince0600 = now-6
}
print(hoursSince0600)
//...
}
}
let timeFormat: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "HH"
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}()
func timeString(date: Date) -> String {
let time = timeFormat.string(from: date)
return time
}
}