首页 > 解决方案 > 使用当前时间提前 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())

标签: xcodeswiftui

解决方案


您需要确定一个日期并添加 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
    }
    
}

推荐阅读