Правильное использование NSDateComponents - PullRequest
0 голосов
/ 25 августа 2011

Я следил за Apple Docs, а также за некоторым кодом здесь, и я не могу заставить 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];

1 Ответ

2 голосов
/ 26 августа 2011

Этот код будет работать.Может быть, это потому, что вы пытаетесь получить доступ к часам и минутам неправильно.Я сделал это и получил текущие часы и минуты в окне консоли:

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]);
...