Date Formatter 带两位数的 24 小时制时间
Date Formatter 24-Hour time with two digits
我正在尝试检查字符串是否包含 24 小时制。
这是我当前的代码:
func isMilTime(from string: String) -> Bool {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
if (dateFormatter.date(from: string) != nil) {
return true
}else{
return false
}
}
print(isMilTime(from: "9:2")) //true
目前像“9:2”这样的个位数时间返回为真。我如何修改它以仅检测两位数的时间,如“9:02”?
为了仅检查格式,我建议使用正则表达式解决方案,returns true
范围 0:00 – 23:59
func isMilTime(from string: String) -> Bool {
return string.range(of: "^(2[0-3]|[01]?\d):[0-5]\d$", options: .regularExpression) != nil
}
print(isMilTime(from: "9:2")) //false
按照@vadian 的建议使用正则表达式检查格式似乎可行。
func isMilTime(from string: String) -> Bool {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
if (dateFormatter.date(from: string) != nil) && isMilTimeReg(from: string) {
return true
}else{
return false
}
}
func isMilTimeReg(from string: String) -> Bool {
return string.range(of: "^\d{1,2}:\d{2}$", options: .regularExpression) != nil
}
print(isMilTime(from: "2:3"))//false
我正在尝试检查字符串是否包含 24 小时制。 这是我当前的代码:
func isMilTime(from string: String) -> Bool {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
if (dateFormatter.date(from: string) != nil) {
return true
}else{
return false
}
}
print(isMilTime(from: "9:2")) //true
目前像“9:2”这样的个位数时间返回为真。我如何修改它以仅检测两位数的时间,如“9:02”?
为了仅检查格式,我建议使用正则表达式解决方案,returns true
范围 0:00 – 23:59
func isMilTime(from string: String) -> Bool {
return string.range(of: "^(2[0-3]|[01]?\d):[0-5]\d$", options: .regularExpression) != nil
}
print(isMilTime(from: "9:2")) //false
按照@vadian 的建议使用正则表达式检查格式似乎可行。
func isMilTime(from string: String) -> Bool {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
if (dateFormatter.date(from: string) != nil) && isMilTimeReg(from: string) {
return true
}else{
return false
}
}
func isMilTimeReg(from string: String) -> Bool {
return string.range(of: "^\d{1,2}:\d{2}$", options: .regularExpression) != nil
}
print(isMilTime(from: "2:3"))//false