在Swift中使用条件的日期间隔

时间:2017-09-03 15:31:54

标签: swift

我想看看两个日期是否相隔至少1小时。类似的东西:

    if Calendar.current.dateComponents([.hour], from: jsqMessage.date, to: lastMessage.date) > 1 {

但二进制运算符不能用于DateComponents类型的操作数。知道如何实现我的目标吗?

2 个答案:

答案 0 :(得分:2)

方法dateComponents不返回数字,而是返回新的DateComponents对象。您必须附加.hour才能获得两个日期之间的小时数。由于.hour会返回Int?类型,因此需要将其解包。

所以你的代码就像

if Calendar.current.dateComponents([.hour], from: jsqMessage.date, to: lastMessage.date).hour! >= 1 {
    // Your code
}

答案 1 :(得分:1)

如果您真的想要处理这种类型的比较,可以在DateComponentsInt上编写扩展名。否则,您需要比较组件本身(在这种情况下为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
}