Сравнение времени в ios Swift - PullRequest
0 голосов
/ 03 июля 2019

Я получаю две строки даты в этом формате: «08:00:00» со стороны сервера в качестве начального или конечного слота.Я должен получить время местного часового пояса, а затем проверить, находится ли текущее время между интервалами времени, поступающими с сервера.Но я не могу сделать сравнение.

func checkTime() -> Bool {


            let dateFormatter: DateFormatter = DateFormatter()
            dateFormatter.dateFormat = "HH:mm:ss"
        dateFormatter.timeZone = TimeZone(identifier: "PKT")


            let startingSlot = self.selectedArea.startingSlot! //UTC
            let endingSlot = self.selectedArea.endingSlot! //UTC
            let date = Date().description(with: Locale.current)
            let current = date.split(separator: " ")
        let currentD:String = String(current[5])

            let date1: Date = dateFormatter.date(from: startingSlot)!
            let date2: Date = dateFormatter.date(from: endingSlot)!
        let currentdate:Date = dateFormatter.date(from: currentD)!

            print(date1)
            print(date2)
            print(current)

            if(currentdate >= date1 && currentdate <= date2) {
                return true
            } else {
                return false
            }
        }

Я ожидаю, что получится, если текущая дата и время находятся между датой 1 и датой 2.

1 Ответ

0 голосов
/ 03 июля 2019

Сравните время, проигнорировав компонент даты -

func checkTime() -> Bool {

let dateFormatter: DateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(abbreviation: "PKT")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

let startingSlot = "2000-01-01 08:00:00" //UTC
let endingSlot = "2000-01-01 23:00:00" //UTC

let date = Date()

let date1: Date = dateFormatter.date(from: startingSlot)!
let date2: Date = dateFormatter.date(from: endingSlot)!

let currentTime = 60*Calendar.current.component(.hour, from: date) + Calendar.current.component(.minute, from: date) + (Calendar.current.component(.second, from: date)/60) // in minutes
let time1 = 60*Calendar.current.component(.hour, from: date1) + Calendar.current.component(.minute, from: date1) + (Calendar.current.component(.second, from: date1)/60) // in minutes
let time2 =  60*Calendar.current.component(.hour, from: date2) + Calendar.current.component(.minute, from: date2) + (Calendar.current.component(.second, from: date1)/60) // in minutes

print(currentTime)
print(time1)
print(time2)

if(currentTime >= time1 && currentTime <= time2) {
    return true
} else {
    return false
}

}

Вывод -

1121
510
1410
правда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...