1

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

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

dateValue 是某个日期,我只关心它的时间,时间是上午 8:00。当我检查这之后是什么组件时,Hour 和 Minute 都为零。

我也尝试插入这个,因为我读到你需要(虽然不是每个例子都有这个):

[components setCalendar:calendar];
4

1 回答 1

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]);
于 2011-08-25T21:54:16.403 回答