1

私はアップルのドキュメントとここのいくつかのコードに従ってきましたが、NSDateComponents を正しく動作させることができないようです。

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

dateValue は何らかの日付です。時間だけを気にします。時間は午前 8 時です。このあと何の成分か調べてみると、時も分もゼロ。

私はあなたが必要だと読んだので、これも挿入しようとしました(ただし、すべての例がこれを持っているわけではありません):

[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-minuteNSNumber オブジェクトではなく、プレーンな整数を返します。

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 に答える