我收到这种格式的两个日期字符串,“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
}
}
如果当前日期时间位于 date1 和 date2 之间,我希望得到 true。
最佳答案
通过忽略日期部分来比较时间 -
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
true
关于ios - 比较 ios Swift 中的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56865367/