检查两个日期之间的日期会得出错误的结果

时间:2019-07-06 18:46:54

标签: swift

我想检查一个日期是否在两个日期之间,但是我的代码结果给我错误的结果,请您检查一下。谢谢您的帮助! 这是我的代码

extension Date{
func isBetweenDates(beginDate: Date, endDate: Date) -> Bool
{
    if self.compare(beginDate) == .orderedAscending
    {
        return false
    }

    if self.compare(endDate) == .orderedDescending
    {
        return false
    }

    return true
   }
 }

 override func viewDidLoad() {
    let result0 =  "08-01-2019".date(format: "dd-MM-YYYY")!.isBetweenDates(beginDate: "01-01-2019".date(format: "dd-MM-YYYY")!, endDate: "09-01-2019".date(format: "dd-MM-YYYY")!)

    let result1 = "04-01-2019".date(format: "dd-MM-YYYY")!.isBetweenDates(beginDate: "06-01-2019".date(format: "dd-MM-YYYY")!, endDate: "08-01-2019".date(format: "dd-MM-YYYY")!)

    let result2 = "05-01-2019".date(format: "dd-MM-YYYY")!.isBetweenDates(beginDate: "01-01-2019".date(format: "dd-MM-YYYY")!, endDate: "04-01-2019".date(format: "dd-MM-YYYY")!)

    let result3 = "06-01-2018".date(format: "dd-MM-YYYY")!.isBetweenDates(beginDate: "01-01-2019".date(format: "dd-MM-YYYY")!, endDate: "08-01-2019".date(format: "dd-MM-YYYY")!)

 }

并输出:result0 = true,result1 = true,result2 = true,result3 = false,或者它们应该是result0 = true,result1 = false,result2 = false,result3 = false,

1 个答案:

答案 0 :(得分:1)

在Swift中,Date是可比的。

这意味着您可以使用此代码比较两个日期...

date1 < date2

您正在使用的比较功能是来自ObjectiveC的旧功能。我想您是在旧教程中找到的?

无论如何,只要做类似...

return date1 < self && self < date2

在您的职务上。

如果selfdate1date2之间,则返回true。