首页 > 解决方案 > Swfit - 检查当前时间是否在两个时间字符串之间

问题描述

如何检查当前时间是否在以下格式的两个时间字符串之间。 HH:MM AM/PM 说如果

startTime = "10:30 AM" 
endTime = "06:30 PM"

如何检查currentTime()值是否在开始时间和结束时间之间?

标签: iosswift

解决方案


您可以设置defaultDate今天的日期格式化程序,解析日期字符串,DateInterval使用开始和结束日期创建一个并检查它是否包含 now Date()

extension Formatter {
    static let today: DateFormatter = {
        let dateFormatter = DateFormatter()
        dateFormatter.locale = .init(identifier: "en_US_POSIX")
        dateFormatter.defaultDate = Calendar.current.startOfDay(for: Date())
        dateFormatter.dateFormat = "hh:mm a"
        return dateFormatter
        
    }()
}

func checkIfCurrentTimeIsBetween(startTime: String, endTime: String) -> Bool {
    guard let start = Formatter.today.date(from: startTime),
          let end = Formatter.today.date(from: endTime) else {
        return false
    }
    return DateInterval(start: start, end: end).contains(Date())
}

let startTime = "10:30 AM"
let endTime = "06:30 PM"
checkIfCurrentTimeIsBetween(startTime: startTime, endTime: endTime)   // true

推荐阅读