2012-09-13 31 views
0

請幫我,我卡住了!如何通過使用initRecurrenceWithFrequency for iOS獲得作爲NSInteger(52或53)的weeksOfTheYear?我

我想做一個簡單的日曆應用程序,並絕望。我需要一個給定年份(52或53)的周值,我明白這個問題的答案是使用initRecurrenceWithFrequency。但我無法讓我的代碼工作!請幫忙。

/約翰


@AliSoftware

Thannks了很多!

但是這段代碼給了我1而不是53.你知道爲什麼嗎? 順便說一句我的模擬器設置狀態格利高裏,作爲它的日曆。 /約翰

NSDateComponents *comps = [NSDateComponents alloc]; 
    [comps setDay:31]; 
    [comps setMonth:12]; 
    [comps setYear:year]; 

    NSCalendar *usersCalendar =[[NSLocale currentLocale] objectForKey:NSLocaleCalendar]; 
    NSDate *date = [usersCalendar dateFromComponents:comps]; 

    NSDateComponents *weekComps = 
    [usersCalendar components:NSWeekCalendarUnit fromDate:date]; 

    NSInteger totalNumberOfWeeksInThisYear = [weekComps week]; 
+1

你是什麼意思一週的價值呢?你能向我們展示一些代碼並解釋什麼不起作用嗎? –

+0

我認爲他的意思是他想回答「自1月1日(含)以來有多少星期六已經過去?」對於任何給定的日期。我相信'initRecurrenceWithFrequency'(EventKit中的'EKRecurrenceRule'方法)完全沒有關係,並且沒有任何用處。我只是用幾行數學來做。但我現在不想寫出確切的數學答案...... P – Quuxplusone

+0

您是在說格列高利曆年還是ISO週年?如果是格里高利,那麼這一年總是會在閏年中運行到第53周1天和2天。如果是ISO周,那麼有一系列規則可以確定上週的這一週的星期數。http://en.wikipedia .ORG /維基/ ISO_week_date#LAST_WEEK – Pedro

回答

1

如果您需要了解哪一年的周#是一個給定的日期,或任何類似的東西(在一年週數,等等),你應該使用NSDateComponents了點。

您應該確實閱讀Apple文檔中的Date and Time Programming Guide。它解釋了有關日期,日曆和日期組件,概念和微妙(閏年等)的一切,與日期和日曆相關的Cocoa類如何相互交互以及如何使用它們。

它真的很詳細(正如蘋果文檔中的每個編程指南,實際上)和如果沒有閱讀本文檔,您無法真正考慮創建日曆應用

(順便說一句,我不看你怎麼問對今年的週會涉及到EKRecurrenceRuleinitRecurrenceWithFrequency方法是什麼?!!)