我从Web服务获取一个特定的字符串,这实际上是一个时间。所以我想检查我从Web服务获得的字符串是否是24小时格式。我已成功使用此代码附加AM和Pm:
let dateAsString = "13:15"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let date = dateFormatter.date(from: dateAsString)
dateFormatter.dateFormat = "h:mm a"
let Date12 = dateFormatter.string(from: date!)
print("12 hour formatted Date:",Date12)
但是我想知道“13:15”是否大于“12:00”,因为这次我是从网络服务获得的。
答案 0 :(得分:2)
只需传递12小时日期格式并检查nil
let dateAsString = "13:15"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm"
let is24HourFormat = dateFormatter.date(from: dateAsString) == nil
答案 1 :(得分:1)
你所做的只是将日期格式化为可读的字符串.. 但你真正想要的是比较日期:
请参阅下一个示例,比较两个日期[Swift 3.1]
func compareDates() {
let date1 = Date() // now
let date2 = Date().addingTimeInterval(20) // now+20secodns
switch date1.compare(date2) // return ComparisonResult
{
case .orderedAscending:
print("date1 < date2")
case .orderedDescending:
print("date1 > date2")
case .orderedSame:
print("date1 == date2")
}
}
如果你想比较你已经24小时格式和字符串的时间,你可以只使用字符串的正常比较,但我不推荐这个
/// compare only times in 24h format in strings
func compareTimesInStrings() {
let time1 = "13:00"
let time2 = "09:05"
if time1 < time2 {
print("time1 < time2")
} else if time1 > time2 {
print("time1 > time2")
} else {
print("time1 == time2")
}
}
答案 2 :(得分:0)
可能这是一个很长的答案。但这是另一种方式:
let dateAsString = "13:15"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
if let date = dateFormatter.date(from: dateAsString) {
dateFormatter.dateFormat = "h:mm a"
let Date12 = dateFormatter.string(from: date)
let amRange = Date12.range(of: dateFormatter.amSymbol)
let pmRange = Date12.range(of: dateFormatter.pmSymbol)
if pmRange == nil {
print("12 hours")
} else if amRange == nil {
print("24 hours")
}
} else {
print("not in the time range") // if dateAsString is > 23:59
}