2012-04-26 48 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

相關問題