2012-04-26 47 views
0

我有一个Person对象。并且该人物具有以下属性;我想将这个Person对象保存到数组中。该数组可能包含超过100个人物对象。以上所有属性均为字符串。检查日期是否在日期范围之内 - 逻辑问题 - BEGINNER

以下是该数组中的人物对象的示例;

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 29 Mar,我需要检查它是否在StartDateEndDate范围在阵列中的人反对。我有一个该场景的伪代码。

我要检查的日期是StartDateEndDate也是Strings。

伪代码:

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

// Add to an Array 


else 

//Do not add to an array 

因为,在StartDataEndDateProvidedDate都是String我怎么能检查其是否比该规定日期更大或更小?

注:我需要不使用NSPredicate

+0

“NSPredicate”有什么问题?(我没有问这个,因为我认为你应该*使用它;它只是它看起来像一个奇怪的限制。) – 2012-04-26 01:41:53

+0

你需要解析日期字符串,以将它们转换为可以明智地进行比较的东西。 'NSDateFormatter'可能是为此使用的工具。 – 2012-04-26 01:43:48

+0

我尝试了NSPredicates,但它没有为我工作。 http://stackoverflow.com/questions/10307902/writing-a-simple-nspredicate-logic-issue/10314802#10314802。所以我正在尝试这种看起来很有前途的方法。 – shajem 2012-04-26 01:44:13

回答

1

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

或者你可以编写一个单独的compareString:string1 toString:string2方法,并使用字符串,因为你有他们。

你只需要做出你想要做的决定。

1

什么是你正在对这里测试的方法?奇怪的是将日期存储为字符串。你打算解析字符串日期以便将它们与提供的日期进行比较吗?如果是这样,我会远离任何类型的日期类。

如果是这样,我只是将它分成3个字符串 - 星期几,每月,每天。你不关心一周中的哪一天。

你没有一年,所以你不能做任何关于这个的逻辑......我想只是假设它是在同一年。 (你可以做一些疯狂的事情,比如计算'近一年这一天在这一天的这一天下跌',但是来吧......)

将每个月与一个整数相关联。比方说,使用哈希映射。如Months.put('January',1)等。

从每个日期中获取数字 - 只需从字符串转换为整数。

然后,对于某些内容是否是之前或之后的日期的逻辑是(如果是-1是myMonth之前,0是它们是相同的,而1是myMonth是之后)

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; 
+0

我认为会有一个简单的方法来做到这一点:S – shajem 2012-04-26 01:58:54

相关问题