NSDate - время извлечения - PullRequest
       2

NSDate - время извлечения

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

Задача

У меня есть timestamp, который я конвертирую в NSDate. Теперь мне нужно извлечь время. Я успешно извлек время, но единственная проблема, которая у меня есть, заключается в том, что если минуты равны 0, вместо «00» отображается «0». Таким образом, 11:00 будет показано как: «11: 0». Все остальное работает, например 11:30 работает нормально.

Код

    NSDate *date = [NSDate dateWithTimeIntervalSince1970:[self.program.sd intValue]];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH:mm"];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [calendar components:(kCFCalendarUnitHour | kCFCalendarUnitMinute) fromDate:date];
    NSInteger hour = [components hour];
    NSInteger minute = [components minute];
    NSLog(@"%d:%d", hour, minute);

Есть предложения? Что я сделал не так? Есть ли лучший способ извлечь часы и минуты одновременно, а не то, что я делал выше?

Спасибо!

Ответы [ 2 ]

12 голосов
/ 24 августа 2011

Получаете ли вы правильные значения обратно? Если все, что вы делаете, показывает время пользователю, вы должны использовать NSDateFormatter для создания строки из объекта даты.

NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
[formatter setDateFormat:@"hh:mm"];
NSString *timeString = [formatter stringFromDate:date];

Возможности для строк формата задокументированы в UTS # 35: Язык разметки данных локали Приложение F: Шаблоны формата даты .

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

Вы должны указать, что вы хотите заполнить нулями:

NSLog(@"%02d:%02d", hour, minute);
...