我想看看两个日期是否相隔至少1小时。类似的东西:
if Calendar.current.dateComponents([.hour], from: jsqMessage.date, to: lastMessage.date) > 1 {
但二进制运算符不能用于DateComponents类型的操作数。知道如何实现我的目标吗?
答案 0 :(得分:2)
方法dateComponents
不返回数字,而是返回新的DateComponents
对象。您必须附加.hour
才能获得两个日期之间的小时数。由于.hour
会返回Int?
类型,因此需要将其解包。
所以你的代码就像
if Calendar.current.dateComponents([.hour], from: jsqMessage.date, to: lastMessage.date).hour! >= 1 {
// Your code
}
答案 1 :(得分:1)
如果您真的想要处理这种类型的比较,可以在DateComponents
或Int
上编写扩展名。否则,您需要比较组件本身(在这种情况下为hour
):
if let hours = Calendar.current.dateComponents([.hour], from: jsqMessage.date, to: lastMessage.date).hour,
hours > 1 {
// Something
}
// OR
if Calendar.current.dateComponents([.hour], from: jsqMessage.date, to: lastMessage.date).hour! > 1 {
// Something
}