我使用Xcode和Objective-C对iOS编程相对较新。
我需要能够将歌曲的长度,例如3:31(即字符串)转换为表示秒的整数。所以3:31(mm:ss)将是211秒,然后从211回到3:31。
任何帮助我入门的人都将不胜感激。
答案 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
这不是您希望它看起来的样式。