Swift-openweathermap.org api:What';我的比较函数有什么错误?
我正在使用openweathermap.org api。我得到日出和日落的日期,并比较这些。日期1是日出日期,日期2是日落日期。我在检查天气是否属实,答案是肯定的。但答案是错误的。我在比较月、日和时间。我的代码出了什么问题 这是我的密码: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
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()
}
}