2012-02-04 61 views
1

使用NSDateComponents我知道如何獲得day組件,但是這給了我一個從1 - 365的值,對吧?我需要獲得特定月份的1-30天,我該怎麼辦?NSDate - 獲取本月的幾天(不是一年的幾天)?

例如,我有一個NSDate可能是5月16日。我希望能夠獲得這一天,所以它返回16.作爲那個月的第16天(而不是一年中的第16天)。

謝謝。

編輯:

我有這樣的:

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *comps = [cal components:NSDayCalendarUnit fromDate:[[NSUserDefaults standardUserDefaults] objectForKey:@"dateSaved"]]; 

然而comps.day返回1,當它應該等於什麼日期被保存爲,說4

+0

可以肯定的是:嘗試NSLog'comps',以及您從默認值中檢索的日期對象。 – 2012-02-04 14:42:22

+0

我有NSLogged他們,comps.day總是返回1,我不能記錄保存的日期,我會如何正確?我已經嘗試了NSLog(@「%@」,[[NSUserDefaults standardUserDefaults] objectForKey:@「dateSaved」]);'我在控制檯中得到空值。不過,我知道它不返回null,因爲我在其他地方使用它,並設置它的日期和它的工作。 – 2012-02-04 14:48:38

+1

您是否確定密鑰是正確的,並且您在代碼中的正確時間調用了它?這似乎表明你沒有得到正確的'NSDate'對象。 – 2012-02-04 14:53:19

回答

1

NSDateComponentsday值根據給定日曆給出每月的一天:

NSDate *date = [NSDate date]; 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *comps = [gregorian components:NSDayCalendarUnit fromDate:date]; 
NSLog(@"%@/%d", date, comps.day); 

給出

2012-02-04 15:27:36.682 testapp[1533:f803] 2012-02-04 14:27:36 +0000/4 

雖然二月,四是今年的第35天。

+0

編輯答案與答覆,希望你能幫助。 – 2012-02-04 14:38:08