测试两个整数以确定现在是白天还是晚上

Test two integers to determine if it is day or night

我正在从事一个使用国家气象局数据的项目。一个应用程序正在确定是白天还是晚上(来自数据 - 而不是来自用户的位置)

我的问题是:我无法理解为什么我写的代码总是returns是晚上!

我有房产:

BOOL isNight;

还有一些变量:

int sunriseDifference
int sunsetDifference

表示气象站的观测时间与该气象站当地日落或日出的时间差。

我的逻辑是这样的:

sunriseDifference > 0 AND sunsetDifference > 0 然后是晚上(PM 晚上)

sunriseDifference < 0 AND sunsetDifference < 0 然后是晚上(AM 晚上)

否则就是白天

代码如下:

if ((sunriseDifference >= 0) && (sunsetDifference >= 0)) {
    self.isNight = YES;
} else if ((sunriseDifference <= 0) && (sunsetDifference <= 0)) {
    self.isNight = YES;
} else self.isNight = NO;

这总是会产生

self.isNight = YES

知道我的错误在哪里吗?

编辑

为了清楚起见,sunriseDifference 和 sunsetDifference 是整数,代表自日落或日出以来的分钟数。

所以在 1500,在加利福尼亚州的一个气象站(白天),变量的值是:

sunriseDifference = 482
sunsetDifference = -118

所以,按照我的逻辑,以上两个条件都不满足,所以self.isNight应该是NO。我的代码 returns self.isNight 为 YES...

我断定我在代码中犯了错误,而不是我的逻辑。有什么想法吗?

同意暗示如果没有气象服务的语义,问题很难理解的评论。但是如果我正在设计一个天气服务,那两个参数总是会有不同的符号:

sunriseDifference > 0 && sunsetDifference < 0  means it's day
sunriseDifference < 0 && sunsetDifference > 0  means it's night

如果我对数据的含义是正确的,那么代码可以更正并简化为:

self.isNight = sunriseDifference < 0 && sunsetDifference >= 0;