ios - Swfit - 检查当前时间是否在两个时间字符串之间
问题描述
如何检查当前时间是否在以下格式的两个时间字符串之间。
HH:MM AM/PM
说如果
startTime = "10:30 AM"
endTime = "06:30 PM"
如何检查currentTime()
值是否在开始时间和结束时间之间?
解决方案
您可以设置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
推荐阅读
- java - 尝试将子类型数组添加到父类型二维数组中
- vue.js - Vuetify v-select 获取项目索引
- javascript - 按 Enter 提交表单并以模式显示结果而无需重新加载
- scala - 为什么在我使用 SortedSet 时出现“错误:...发散隐式扩展...”?
- vba - 我正在尝试在 VBA 上运行特定代码并看到以下错误 runtime error run time error-2147319765(8002802b)
- java - java文件没有出现在项目中
- reactjs - React app componentDidMount 渲染两次
- c++ - 假设有一个名为 A 的类。传递以下两个对象有什么区别:(a) A obj1 和 (b) A obj1()?
- java - Java - CodeName One:找不到符号文件输入/输出
- amazon-ec2 - 如何在 EC2 引导脚本中安全地传递密码?