2012-05-18 28 views
1

我是一個新的目標C,我正在開發一個應用程序來確定用戶給出年份和天數時的出生日期。例如,如果用戶將1985年作爲他/她的出生年,並且天數爲311.他/這裏的出生日期是1985年11月6日。那麼如何從1985年的311年11月6日?請幫助如何在Objective C中獲取月份和日期?

+0

你的教授應該解釋算法做,在類。 –

回答

4

您應該永不必須計算當前年份是否爲閏年。永遠不會。讓框架爲你做。人們比我們更聰明,或者我已經爲我們做了這些事情,那麼爲什麼我們會用重新發明這種車輪的次優算法來解決所有錯綜複雜的日曆變化呢?

這是愚蠢自己做這個。所以,不要:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *startComponents = [[NSDateComponents alloc] init]; 
[startComponents setYear:1985]; 
[startComponents setDay:311]; 

NSDate *date = [gregorian dateFromComponents:startComponents]; 

NSLog(@"endDate: %@", date); 

此日誌:

endDate: 1985-11-07 08:00:00 +0000 
+0

這就解決了我的問題,非常感謝 –

-2

首先,爲什麼你從某人獲得天數而不是獲取月和日。用戶不知道他們出生的那一年是哪一天,並且會試圖弄清楚它們會感到沮喪。

要回答你的問題,你可以有一個數組來存儲每個月末的天數{31,28,31,30,...}並將其用作參考(將總數減去一個循環)。您還需要檢查年度是閏年,如果超過59年,請從總數中減去一個。

+1

-1這是錯誤的。你應該使用內置的API來做到這一點。 –

+0

在斯里蘭卡國家身份證號碼是這樣的 - 853110035.所以第一個數字是出生年份,接下來的三位數字是從1月1日生日的天數。 –

+0

這沒有錯。爲什麼需要API調用?對於像這樣簡單的事情他們很沉重。他們必須處理更多的東西才能得出相同的答案。 – RileyE

-2

您不需要任何Objective-C特定的東西...首先您需要知道if the year is a leap year。然後你需要計算幾個月的日子,直到你結束目標日。

+2

-1不,這是錯誤的。你應該使用內置的API來做到這一點。 –

+0

正如@Dave DeLong所指出的:你應該使用內置的API –

-1

像這樣(未測試):

NSDateFormatter *df = [[NSDateFormatter alloc] init] autorelease]; 
[df setDateFormat:@"yyyy"]; 
NSDate *date1 = [df dateWithString:@"1985"]; 
NSDate *date2 = [df dateByAddingTimeInterval:60*60*24*311]; // 
+1

-1不是每天都有86,400秒 –

相關問題