Как сравнить две проверки строки времени, если строка2 терка, а затем первая строка в быстром - PullRequest
0 голосов
/ 04 августа 2020

Я новичок в Swift. Я провожу этот квест и тоже получил ответ, но у меня это не сработало. Извините, что снова спрашиваю. Мой вопрос в том, как сравнить две временные строки. Я использую этот код.

let date = Date()
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        let result = formatter.string(from: date)
        print(result)
        
        var totalTimeLoggedIn = TimeInterval() // 1 hour
        
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        
        let loginTimeDate = dateFormatter.date(from: lblWorkStarted.text ?? "")!
        let logoutTimeDate = dateFormatter.date(from: result)!
        
        
        let timeLoggedIn = logoutTimeDate.timeIntervalSince(loginTimeDate)
        totalTimeLoggedIn += timeLoggedIn
        print("totalTimeLoggedIn: \(totalTimeLoggedIn.stringValue())")
        let TotalTimeLoginString = totalTimeLoggedIn.stringValue()
        let anotherdate = "02:00:00"
        
        if anotherdate < TotalTimeLoginString{
            print("True")
            
        }else{
            
        } 

lblWorkStarted.text - текущая дата и время. Я столкнулся с проблемой в том, что если TotalTimeLoginString имеет значение «10:15», то условие не работает должным образом, а если TotalTimeLoginString имеет значение «03:12:11», то оно работает правильно. Моя проблема в том, что если я не получил час, значит, состояние не работает. Заранее спасибо!

1 Ответ

1 голос
/ 04 августа 2020

у вас здесь несколько ошибок:

  • Вам нужно снова создать DateFormatter (). Это тяжелая операция, так как https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html# // apple_ref / doc / uid / TP40002369-SW10

  • Вы должны различать дату и продолжительность. Сегодня 04.08.2020, вы не можете сравнивать его с продолжительностью как 1 час 2 часа.

  • если ваш anotherdate составляет два часа, почему вы не сравниваете это как: 2 * 60 * 60 < totalTimeLoggedIn?

     let date = Date()
    
     let dateFormatter = DateFormatter()
     dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    
     let loginTimeDate = dateFormatter.date(from: lblWorkStarted.text ?? "")!
     let timeLoggedIn = Date().timeIntervalSince(loginTimeDate)
     let anotherDate = 2 * 60 * 60
    
     if anotherDate < timeLoggedIn {
         print("True")
    
     }else{
    
     } 
    
...