Pau*_* S. 1 objective-c ios xcode4.2
我使用Xcode和Objective-C对iOS编程相对较新.
我需要能够将歌曲的长度(例如3:31)转换为表示秒的整数.所以3:31(mm:ss)将是211秒,然后从211回到3:31.
任何帮助我开始的帮助将不胜感激.
您可以将字符串拆分为:,并计算结果,如下所示:
NSArray* tokens = [lengthStr componentsSeparatedByString:@":"];
NSUInteger lengthInSeconds = 0;
for (int i = 0 ; i != tokens.count ; i++) {
lengthInSeconds = 60*lengthInSeconds + [[tokens objectAtIndex:i] integerValue];
}
Run Code Online (Sandbox Code Playgroud)
要重新格式化值,请使用
[NSString stringWithFormat:@"%d:%02d", lengthInSeconds / 60, lengthInSeconds % 60];
Run Code Online (Sandbox Code Playgroud)
要将时间(以秒为单位)转换为您描述的字符串,可以使用以下代码:
int songLength = 211;
int minutes = songLength / 60;
int seconds = songLength % 60;
NSString *lengthString = [NSString stringWithFormat:@"%d:%02d", minutes, seconds];
Run Code Online (Sandbox Code Playgroud)
注意使用0in %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;
Run Code Online (Sandbox Code Playgroud)
编辑:添加小时数
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];
Run Code Online (Sandbox Code Playgroud)
和
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4020 次 |
| 最近记录: |