xcode - 使用当前时间提前 1.5 小时计算时间并将其显示在列表中
问题描述
我有以下代码有人按下表并显示当前时间,即客户的到达时间。
我想显示他们必须离开的时间,在当前时间旁边,这总是提前 1.5 小时我不知道该怎么做。我尝试过的一切都返回错误。
Xcode 还是新手
任何帮助都会很棒
import SwiftUI
struct TimeListView: View {
@State var tableOne = false
@State var tableTwo = false
@State var tableThree = false
var body: some View {
// Title
VStack {
Text("Arrival Times")
.font(.title)
.fontWeight(.bold)
// List View
List {
// Table 1
HStack {
Button(action: {
self.tableOne.toggle()
}, label: {
Text("Table 1 -")
})
if tableOne {
Text(getCurrentTime())
}
}
// Table 2
HStack {
Button(action: {
self.tableTwo.toggle()
}, label: {
Text("Table 2 -")
})
if tableTwo {
Text(getCurrentTime())
}
}
// Table 3
HStack {
Button(action: {
self.tableThree.toggle()
}, label: {
Text("Table 3 -")
})
if tableThree {
Text(getCurrentTime())
}
}
}
}
}
}
struct TimeListView_Previews: PreviewProvider {
static var previews: some View {
TimeListView()
}
}
// Get Current Time Function
func getCurrentTime() -> String {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_UK_POSIX")
dateFormatter.dateFormat = "HH:mm"
return dateFormatter.string(from: Date())
解决方案
您需要确定一个日期并添加 1.5 小时,而且您忘记为他们创建 3 个不同的状态。
import SwiftUI
struct ContentView: View {
var body: some View {
TimeListView()
}
}
struct TimeListView: View {
@State private var table1: Bool = false
@State private var table2: Bool = false
@State private var table3: Bool = false
@State private var timeForShow1: String?
@State private var timeForShow2: String?
@State private var timeForShow3: String?
var body: some View {
VStack {
Text("Arrival Times")
.font(.title)
.fontWeight(.bold)
List {
HStack {
Text("Table 1 -")
.onTapGesture {
if table1 { table1.toggle() }
else { timeForShow1 = getCurrentTime; table1.toggle() }
}
if table1 { Text(timeForShow1 ?? "not available!") }
}
HStack {
Text("Table 2 -")
.onTapGesture {
if table2 { table2.toggle() }
else { timeForShow2 = getCurrentTime; table2.toggle() }
}
if table2 { Text(timeForShow2 ?? "not available!") }
}
HStack {
Text("Table 3 -")
.onTapGesture {
if table3 { table3.toggle() }
else { timeForShow3 = getCurrentTime; table3.toggle() }
}
if table3 { Text(timeForShow3 ?? "not available!") }
}
}
}
}
}
var getCurrentTime: String? {
if let date = Calendar.current.date(byAdding: .minute, value: 90, to: Date()) {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_UK_POSIX")
dateFormatter.dateFormat = "HH:mm"
return dateFormatter.string(from: date)
}
else {
return nil
}
}
推荐阅读
- r - 从列中删除所有数字
- python - 带有启动设置的 Scrapy 在 scrapy shell 中工作,否则失败
- halide - 有没有办法指定在四重像素上运行的卤化物计算?
- python - 某些条目未添加到字典中
- javascript - 如何将 node-jose 与 jwt 令牌一起使用?
- c++ - find_if 和 bind2nd 等价于 lower_bound、upper_bound
- sql-server - 紧急联络人
- c# - Datagridview单元格值不相等但它们应该是c#
- ios - Firebase ionic iOS 错误 - [FIRApp isDataCollectionDefaultEnabled]:无法识别的选择器
- python - model.add(layers.MaxPooling1D(pool_size=3)) ^ SyntaxError: 无效语法