如何基于四舍五入的时间进行货币计算?



我有SwiftUI代码,它计算两个时间(startTime和endTime)之间的时间持续时间,并四入到最接近的15分钟。但是我如何从这段时间计算每小时220美元的汇率呢?

我似乎也在努力组织我的代码到视图代码(对于SwiftUI),也包括在后台运行的数字代码。

但这是我的代码,到目前为止,我有注释,我需要包括这段代码。

import SwiftUI
struct ContentView: View {

@State private var startTime = Date().zeroSeconds
@State private var endTime = Date().zeroSeconds
@State private var number15Intervals = 0
@State private var amountDue = 0.0


var body: some View {
NavigationView {
Form {
Section(header: Text("Enter Case Times:")) {
DatePicker("Start Time", selection: $startTime , displayedComponents: .hourAndMinute)
DatePicker("End Time", selection: $endTime, in: startTime..., displayedComponents: .hourAndMinute)
}
Section(header: Text("Case Duration:")) {
Text("duration = (self.duration) min")
Text("duration (15m) = (self.duration15) min")
}
Section(header: Text("Amount Due:")) {

//        What code do I put here to calculate currency (US dollars)
//         which equals time (rounded up by 15 min) times a rate of $220 per hour?

Text(amountDue, format: .currency(code: Locale.current.currencyCode ?? "USD"))
}
}
.navigationTitle("DDA Rates Calculator")
}
}

var duration: TimeInterval {
guard endTime > startTime else {
return 0
}
let dateIntervalMinutes = DateInterval(start: startTime, end: endTime).duration / 60
return dateIntervalMinutes
}

var duration15: TimeInterval {
return  (self.duration/15.0).rounded(.up)*15
}
}
extension Date {
var zeroSeconds: Date {
let calendar = Calendar.current
let dateComponents = calendar.dateComponents([.hour, .minute], from: self)
return calendar.date(from: dateComponents) ?? self
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

对不起,如果我不太清楚这里。我尝试了各种方法来做到这一点,但似乎总是得到各种各样的错误从XCode。我认为展示我迄今为止的尝试会更令人困惑,因为我尝试了很多方法都没有成功。我不理解的范围和如何正确地引用变量在SwiftUI。

您可以将amountDue@State变量替换为计算属性:

var amountDue: Double {
duration15 / 60 * 220
}

(您也可以删除未使用的number15Intervals)