Swift-openweathermap.org api:What';我的比较函数有什么错误?

Swift-openweathermap.org api:What';我的比较函数有什么错误?,swift,nsdate,Swift,Nsdate,我正在使用openweathermap.org api。我得到日出和日落的日期,并比较这些。日期1是日出日期,日期2是日落日期。我在检查天气是否属实,答案是肯定的。但答案是错误的。我在比较月、日和时间。我的代码出了什么问题 这是我的密码: func checkDate(date1:NSDate, date2:NSDate){ // Date comparision to compare current date and end date. var dateComparisionR

我正在使用openweathermap.org api。我得到日出和日落的日期,并比较这些。日期1是日出日期,日期2是日落日期。我在检查天气是否属实,答案是肯定的。但答案是错误的。我在比较月、日和时间。我的代码出了什么问题

这是我的密码:

func checkDate(date1:NSDate, date2:NSDate){
    // Date comparision to compare current date and end date.
    var dateComparisionResult:NSComparisonResult = NSDate().compare(date1)
    var dateComparision:NSComparisonResult = NSDate().compare(date2)

    if dateComparisionResult == NSComparisonResult.OrderedDescending || dateComparisionResult == NSComparisonResult.OrderedSame && dateComparision == NSComparisonResult.OrderedAscending
    {
        //result is
        answerLabel.text = "yes".uppercaseString
        self.view.backgroundColor = UIColor.whiteColor()
        answerLabel.textColor = UIColor.blackColor()
    }else{
        answerLabel.text = "no".uppercaseString
        self.view.backgroundColor = UIColor.blackColor()
        answerLabel.textColor = UIColor.whiteColor()
    }

}

根据这些评论,您似乎只是在检查当前时间是否在白天

因此,首先,与其将其简化为刚才的检查,不如让它成为一个可以应用于任何时间的
NSDate()
扩展

extension NSDate {
    func between(firstDate: NSDate, _ secondDate: NSDate) -> Bool {
        // TODO: determine if self is between first and second date            
    }
}
为了便于阅读,让我们为
NSDate
提供一些方便的重载运算符,好吗

func == (left: NSDate, right: NSDate) {
    return left.compare(right) == .OrderedSame
}

func > (left: NSDate, right: NSDate) {
    return left.compare(right) == .OrderedDescending
}

func < (left: NSDate, right: NSDate) {
     return left.compare(right) == .OrderedAscending
} 

func != (left: NSDate, right: NSDate) {
    return !(left == right)
}

func >= (left: NSDate, right: NSDate) {
    return (left == right) || (left > right)
}

func <= (left: NSDate, right: NSDate) {
    return (left == right) || (left < right)
}
我们是否希望进行“或等于”比较取决于我们的具体要求。但是添加操作符会使这更干净,并为我们在其他场景中使用添加了方便的操作符,另外,编写单元测试也会更好。作为额外的奖励,我们现在可以将
NSDate
声明为


现在,确定某个特定时间是否在白天非常简单:

let isDaylight = NSDate().between(sunrise, sunset)
或许:

if NSDate().between(sunrise, sunset) {
    // daylight
} else {
    // not daylight
}

我像这样编辑我的代码,它工作

代码:

func checkDate(date1:NSDate, date2:NSDate){
        // Date comparision to compare current date and end date.
        var dateComparisionResult:NSComparisonResult = NSDate().compare(date1)
        var dateComparision:NSComparisonResult = NSDate().compare(date2)

        if dateComparisionResult == NSComparisonResult.OrderedSame || dateComparisionResult == NSComparisonResult.OrderedDescending && dateComparision == NSComparisonResult.OrderedAscending
        {
            //if It is daylight outside
            answerLabel.text = "yes".uppercaseString
            self.view.backgroundColor = UIColor.whiteColor()
            answerLabel.textColor = UIColor.blackColor()
        }else{
             //if It's not daylight outside
            answerLabel.text = "no".uppercaseString
            self.view.backgroundColor = UIColor.blackColor()
            answerLabel.textColor = UIColor.whiteColor()
        }

    }

你到底想比较什么?你希望得到什么结果?如果date1是日出,date2是日落,那么(为什么不这样命名)为什么需要比较它们?
if
else
中的代码确切地告诉了我们什么?我不知道我是否明白。如果说天气晴朗,那埃莱就不晴朗了。这只是测试代码,对不起,名字。如果nsdate=日出,则天气晴朗。这就是我的目的。对不起,我对创建算法和编程是新手。所以,你在检查是否是白天?是的,我在检查白天。
func checkDate(date1:NSDate, date2:NSDate){
        // Date comparision to compare current date and end date.
        var dateComparisionResult:NSComparisonResult = NSDate().compare(date1)
        var dateComparision:NSComparisonResult = NSDate().compare(date2)

        if dateComparisionResult == NSComparisonResult.OrderedSame || dateComparisionResult == NSComparisonResult.OrderedDescending && dateComparision == NSComparisonResult.OrderedAscending
        {
            //if It is daylight outside
            answerLabel.text = "yes".uppercaseString
            self.view.backgroundColor = UIColor.whiteColor()
            answerLabel.textColor = UIColor.blackColor()
        }else{
             //if It's not daylight outside
            answerLabel.text = "no".uppercaseString
            self.view.backgroundColor = UIColor.blackColor()
            answerLabel.textColor = UIColor.whiteColor()
        }

    }