Swift 3 - Comparing Date objects

后端 未结 14 1508
野的像风
野的像风 2020-11-30 07:14

I\'m updating my app to Swift 3.0 syntax (I know it\'s still in beta but I want to be prepared as soon as it released).

Until the previous Beta of Xcode (Beta 5) I wa

相关标签:
14条回答
  • 2020-11-30 07:56

    To compare date only with year - month - day and without time for me worked like this:

         let order = Calendar.current.compare(self.startDate, to: compareDate!, toGranularity: .day)  
    
                          switch order {
                            case .orderedAscending:
                                print("\(gpsDate) is after \(self.startDate)")
                            case .orderedDescending:
                                print("\(gpsDate) is before \(self.startDate)")
                            default:
                                print("\(gpsDate) is the same as \(self.startDate)")
                            }
    
    0 讨论(0)
  • 2020-11-30 07:59

    from Swift 3 and above, Date is Comparable so we can directly compare dates like

    let date1 = Date()
    let date2 = Date().addingTimeInterval(50)
    
    let isGreater = date1 > date2
    print(isGreater)
    
    let isSmaller = date1 < date2
    print(isSmaller)
    
    let isEqual = date1 == date2
    print(isEqual)
    

    Alternatively We can create extension on Date

    extension Date {
    
      func isEqualTo(_ date: Date) -> Bool {
        return self == date
      }
      
      func isGreaterThan(_ date: Date) -> Bool {
         return self > date
      }
      
      func isSmallerThan(_ date: Date) -> Bool {
         return self < date
      }
    }
    

    Use: let isEqual = date1.isEqualTo(date2)

    0 讨论(0)
提交回复
热议问题