To convert the time in seconds to the string you described, you can use the following code:
int songLength = 211;
int minutes = songLength / 60;
int seconds = songLength % 60;
NSString *lengthString = [NSString stringWithFormat:@"%d:%02d", minutes, seconds];
Note the use of 0
in %02d
This makes values like 188 transformed into 3:08 instead of 3:8.
You can use NSDateFormatter to get seconds and minutes from the time string:
NSString *timeString = @"3:31";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"mm:ss";
NSDate *timeDate = [formatter dateFromString:timeString];
formatter.dateFormat = @"mm";
int minutes = [[formatter stringFromDate:timeDate] intValue];
formatter.dateFormat = @"ss";
int seconds = [[formatter stringFromDate:timeDate] intValue];
int timeInSeconds = seconds + minutes * 60;
Edit: Adding hours
int songLength = 4657;
int hours = songLength / 3600;
int minutes = (songLength % 3600) / 60;
int seconds = songLength % 60;
NSString *lengthString = [NSString stringWithFormat:@"%d:%02d:%02d", hours, minutes, seconds];
And
NSString *timeString = @"2:3:31";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"hh:mm:ss";
NSDate *timeDate = [formatter dateFromString:timeString];
formatter.dateFormat = @"hh";
int hours = [[formatter stringFromDate:timeDate] intValue];
formatter.dateFormat = @"hh";
int minutes = [[formatter stringFromDate:timeDate] intValue];
formatter.dateFormat = @"ss";
int seconds = [[formatter stringFromDate:timeDate] intValue];
int timeInSeconds = seconds + minutes * 60 + hours * 3600;