在swift中比较两个日期时发出

在swift中比较两个日期时发出,swift,date,Swift,Date,我试图比较两个日期,一个来自后端,另一个是当前日期。但它没有显示正确的结果,比如我的第一个日期是2020年1月26日,当前日期是2020年1月27日,它不应该在数组中添加第一个日期。我只希望这些日期是从当前日期以上。我的比较代码是 for date in dateRange { let availableDate = dateFormatter.string(from: date as Date) //self.datesArray.append(availableDate +

我试图比较两个日期,一个来自后端,另一个是当前日期。但它没有显示正确的结果,比如我的第一个日期是2020年1月26日,当前日期是2020年1月27日,它不应该在数组中添加第一个日期。我只希望这些日期是从当前日期以上。我的比较代码是

for date in dateRange
{
    let availableDate = dateFormatter.string(from: date as Date)
    //self.datesArray.append(availableDate + " | \(dateTime.startTime ?? "") - \(dateTime.endTime ?? "")")
    let dates = Date()
    let formatter = DateFormatter()
    formatter.dateFormat = "EEEE, MMM d, yyyy"
    let results = formatter.string(from: dates)
    if availableDate <= results
    {
        print("Past Date")
    }
    else
    {
        print(availableDate)
        print(results)
        self.datesArray.append(availableDate)
    }
}
日期范围中日期的

{
let availableDate=dateFormatter.string(从:日期为日期)
//self.datesArray.append(可用日期+“|\(dateTime.startTime??)-\(dateTime.endTime??))
让日期=日期()
let formatter=DateFormatter()
formatter.dateFormat=“EEEE,MMM d,yyyy”
让结果=formatter.string(从:日期)

如果可用,将日期转换为字符串并进行比较是一个非常糟糕的主意

此外,字符串格式无论如何都不可比较(例如,
Feb
小于
Jan

比较日期

for date in dateRange {            
   let now = Date()
   if date <= now {
       print("Past Date")
   } else {
       print(date)
       print(now)
       self.datesArray.append(date) // declare datesArray as [Date]
   }
}

要检查今天之后的日期(仅按日期而非时间),请使用内置的日期类型而不是字符串,并使用Calendar类

let now = Date()
let calendar = Calendar.current
let datesArray = dateRange.filter { calendar.compare($0, to: now, toGranularity: .day) == .orderedDescending} 

为了获得最佳效果,您应该将
时区
属性设置为传入日期的时区

您应该使用日期格式
MMM-dd,yyyy
而不是
EEEE,MMM-d,yyyy
。谢谢您保证了我的时间。@vadian
let now = Date()
let calendar = Calendar.current
let datesArray = dateRange.filter { calendar.compare($0, to: now, toGranularity: .day) == .orderedDescending}