0

在我的应用程序中,我需要在一个 if-else 循环中比较三个日期。我有开始日期、结束日期和测试日期。我要检查的是测试日期是否在开始日期和结束日期之间。

if (testDate >= startDate && testDate <= endDate) {

如果我将 startDate 设置为 25/04/2012 并将 endDate 设置为 24/04/2019 并将 testDate 设置为 25/12/2013,则代码有效。但是,如果我将 startDate 设置为 26/04/2000 并将 endDate 设置为 24/04/2019 并将 testDate 设置为 25/12/2013,则代码不起作用。怎么了?

4

2 回答 2

3

您无法将 Objective-C 对象与 C 中的任何布尔运算符进行比较。您将比较它们的地址,而不是它们的值。

查看NSDate该类的文档,特别是-compare:方法。

于 2012-04-27T17:10:39.680 回答
2

日期可以这样比较。但是,您必须首先调用timeIntervalSince1970将日期转换为整数类型值。在这种情况下,它会为您提供 type 的数值NSTimeInterval

另一种选择是使用在对象compare:上调用的方法。NSDate

在这种情况下,将一个日期与另一个日期进行比较将在类参考中给出详细的结果,如下所示:

  • 接收者和anotherDate完全相等,NSOrderedSame

  • 接收者在时间上晚于另一个日期,NSOrderedDescending

  • 接收者在时间上早于另一个日期,NSOrderedAscending。

于 2012-04-27T17:15:24.857 回答