2011-08-25 62 views
0

我一直在关注苹果文档以及这里的一些代码,我似乎无法让NSDateComponents正常工作。正确使用NSDateComponents

NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [calendar components:(NSHourCalendarUnit|NSMinuteCalendarUnit) fromDate:dateValue]; 
[calendar release]; 

dateValue是某个日期,我只关心它的时间,而时间是上午8:00。当我在此之后查看哪些组件时,小时和分钟均为零。

我也试过将这个,是因为我读了你需要(虽然不是每个例子有这个):

[components setCalendar:calendar]; 

回答

2

该代码将工作。也许这是因为你试图错误地访问小时和分钟。我这样做,并获得当前的小时和分钟在控制台窗口:

NSDate *dateValue = [NSDate date]; 
NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [calendar components:(NSHourCalendarUnit|NSMinuteCalendarUnit) fromDate:dateValue]; 
NSLog(@"hour: %d, minute: %d", [components hour], [components minute]); 
[calendar release]; 

-hour-minute回普通整数,而不是NSNumber的对象。

+0

它实际上与日历有关。我想我一直在不停地检查同一时间,事实上我的日历是-8我认为的时区,所以我变得0。 – JPC