2012-02-04 52 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