如何将“3:31”mm:ss从字符串转换为表示秒的整数

时间:2012-02-14 17:22:56

标签: objective-c ios xcode4.2

我使用Xcode和Objective-C对iOS编程相对较新。

我需要能够将歌曲的长度,例如3:31(即字符串)转换为表示秒的整数。所以3:31(mm:ss)将是211秒,然后从211回到3:31。

任何帮助我入门的人都将不胜感激。

4 个答案:

答案 0 :(得分:7)

您可以将字符串拆分为:,并按如下方式计算结果:

NSArray* tokens = [lengthStr componentsSeparatedByString:@":"];
NSUInteger lengthInSeconds = 0;
for (int i = 0 ; i != tokens.count ; i++) {
    lengthInSeconds = 60*lengthInSeconds + [[tokens objectAtIndex:i] integerValue];
}

要重新格式化值,请使用

[NSString stringWithFormat:@"%d:%02d", lengthInSeconds / 60, lengthInSeconds % 60];

答案 1 :(得分:7)

要将时间(以秒为单位)转换为您描述的字符串,可以使用以下代码:

int songLength = 211;
int minutes = songLength / 60;
int seconds = songLength % 60;
NSString *lengthString = [NSString stringWithFormat:@"%d:%02d", minutes, seconds];

请注意0中使用%02d这会使188这样的值转换为3:08而不是3:8。

您可以使用NSDateFormatter从时间字符串中获取秒和分钟:

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;

修改:添加营业时间

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

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;

答案 2 :(得分:1)

NSString有很多很好的方法可以帮助解决这类问题。

您可以使用componentsSeperatedByString来分解您的分钟和秒数

NSArray *listItems = [list componentsSeparatedByString:@":"];

然后使用intValue将字符串转换为int。

最后,将您的分钟转换为秒并将其全部添加。

你可以获得NSString在课堂推荐中所做的所有伟大事情的细节 (NSString Reference)

答案 3 :(得分:0)

这是我在我的一个应用中使用的方法,用于将long转换为mm:ss格式:

long seconds = //anything;
NSString *output = [NSString stringWithFormat:@"%02lu:%02lu",seconds/60,seconds-(seconds/60)*60];

如果你正在使用int,你只需要用我喜欢的格式替换lu:

[NSString stringWithFormat:@"%02i:%02i",seconds/60,seconds-(seconds/60)*60];

02确保输出始终为两位数。 65秒将显示为01:05。如果您在格式中使用%i:%i,则65秒的输出将如下所示:1:5这不是您希望它看起来的样式。