我一直在关注苹果文档以及这里的一些代码,我似乎无法让NSDateComponents正常工作。
NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:(NSHourCalendarUnit|NSMinuteCalendarUnit) fromDate:dateValue];
[calendar release];
dateValue是某个日期,我只关心它的时间,时间是上午8:00。当我检查此后的组件时,小时和分钟都是零。
我也试过插入这个,因为我读过你需要的(虽然不是每个例子都有这个):
[components setCalendar:calendar];
答案 0 :(得分: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对象。
从ios8开始,不推荐使用类常量,使用下面的代码:
NSDate *dateValue = [NSDate date];
NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour|NSCalendarUnitMinute) fromDate:dateValue];
NSLog(@"hour: %ld, minute: %d", (long)[components hour], [components minute]);