NSLog минут и секунд NSDateComponents – как отображать ведущие нули?

Мне действительно нужна помощь. Результат кода равен 2:0:0 а для формата задано значение hh:mm:ss . Я хочу, чтобы результат был 2:00:00 (добавив 0 перед минутами и секундами, когда им меньше 10 ).

 NSDateFormatter *test = [[NSDateFormatter alloc] init]; [test setDateFormat:@"HH:mm:ss"]; NSDate *date1 = [test dateFromString:@"18:00:00"]; NSDate *date2 = [test dateFromString:@"20:00:00"]; NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; unsigned int uintFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; NSDateComponents* differenceComponents = [gregorian components:uintFlags fromDate:date1 toDate:date2 options:0]; NSLog(@"%d:%d:%d",[differenceComponents hour],[differenceComponents minute],[differenceComponents second]); 

Как это сделать?

Журнал с использованием %02ld , например:

 NSLog(@"%ld:%02ld:%02ld",[differenceComponents hour],[differenceComponents minute],[differenceComponents second]); 

Вывод:

 2:00:00 

Кроме того, создайте NSStrings следующим образом:

 NSString *theString = [NSString stringWithFormat:@"%ld:%02ld:%02ld",[differenceComponents hour],[differenceComponents minute],[differenceComponents second]]; NSLog(@"%@",theString); 

Проблема в том, что: 00-00 равно 0. У меня была проблема и она была решена так

 -(NSString*)formatIntToString:(int)inInt{ if (inInt <10) { NSString *theString = [NSString stringWithFormat:@"0%d",inInt]; return theString; } else { NSString *theString = [NSString stringWithFormat:@"%d",inInt]; return theString; }} 

Используйте это в своем NSLog:

 NSLog(@"%@:%@:%@",[self formatIntToString:[differenceComponents hour]],[self formatIntToString:[differenceComponents minute]],[self formatIntToString:[differenceComponents second]]); 
Interesting Posts
Давайте будем гением компьютера.