Iphone 检查日期是否在一系列日期之间-逻辑问题-初学者

Iphone 检查日期是否在一系列日期之间-逻辑问题-初学者,iphone,objective-c,Iphone,Objective C,我有一个人对象。并且此person对象具有以下属性: Name StartDate EndDate 我正在将此Person对象保存到数组中。此数组可能包含100多个person对象。以上所有属性都是字符串 下面是该数组中person对象的示例 John, Tue Feb 22, Thr Mar 30 Jack, Wed Mar 09, Fri Apr 21 Jack, Thu Mar 19, Fri Dec 20 Jack, Tue Jan 08, Fri Apr 26 etc.. 现在我需

我有一个
对象。并且此person对象具有以下属性:

Name
StartDate
EndDate
我正在将此
Person
对象保存到数组中。此数组可能包含100多个person对象。以上所有属性都是字符串

下面是该数组中person对象的示例

John, Tue Feb 22, Thr Mar 30
Jack, Wed Mar 09, Fri Apr 21
Jack, Thu Mar 19, Fri Dec 20
Jack, Tue Jan 08, Fri Apr 26 etc..
现在我需要提供一个日期,例如
Wed Mar 29
,我需要检查它是否在persons对象数组中的
StartDate
EndDate
范围内。我有一个场景的伪代码

我要对照
StartDate
EndDate
检查的日期也是字符串

伪代码:

if Startdate >= providedDate && EndDate <= providedDate {

// Add to an Array


else 

//Do not add to an array 

如果Startdate>=providedDate&&EndDate您在这里测试什么?将日期存储为字符串是很奇怪的。是否要解析字符串日期以便将其与提供的日期进行比较?如果是这样,我将远离任何类型的约会课程

如果是这样的话,我就把它分成3个字符串——一周中的某一天,一个月,一天。你不在乎一周中的哪一天

你没有一年的时间,所以你不能做任何逻辑。。。我想就假设这都是在同一年。(你可以做一些疯狂的事情,比如计算‘最近哪一年的这一天是在一周中的这一天’,但是拜托……)

将每个月与一个整数关联。比如说,使用散列映射。如月份。put('一月',1)等

获取每个日期的数字——只需将字符串转换为整数即可

那么某物是在日期之前还是之后的逻辑是(如果-1是myMonth是在日期之前,0是它们相同,1是myMonth是在日期之后)

if(Months.get(myMonth)Months.get(providedMonth))返回1
其他的
如果(myDateprovidedDate)返回1;
否则返回0;

为了比较值,您需要具有可比性的值。您可以使用NSDate对象,可以将日期强制转换为可排序的字符/数字形式(例如20120425),也可以使用实现自己的
compare:options:
方法的自定义对象

或者您可以编写一个单独的
compareString:string1到string:string2
方法,并使用现有的字符串


你只需要决定你想做什么。

预测有什么问题吗?(我问这个问题不是因为我认为您应该使用它;只是它似乎是一个奇怪的限制。)您需要解析日期字符串,将它们转换为可以进行合理比较的内容
NSDateFormatter
可能是用于此目的的工具。我尝试过NSPredicates,但它对我不起作用。因此,我正在尝试这种看起来很有希望的方法。将所有内容都转到NSDate,然后[data1比较:date2]==nOrderSame,nOrderedAscending,nOrderedAscending我认为你的问题还在于你比较的是字符串而不是日期对象。我认为有一种简单的方法可以做到这一点:S
if (Months.get(myMonth) < Months.get(providedMonth)) return -1
else if (Months.get(myMonth) > Months.get(providedMonth)) return 1
else
  if (myDate < providedDate) return -1;
  else if (myDate > providedDate) return 1;
  else return 0;