[英]How to Convert NSInteger or NSString to a binary (string) value
[英]How can I convert a NSString representation of a time value into two NSInteger's containing the hour and minute?
我将深入研究iOS开发和Objective C语言,并构建一个闹钟应用程序以熟悉SDK和语言。 我有一个表示时间的NSString
对象,范围为"1:00 am"
到"12:59 am"
。 我需要将此NSString
转换为两个包含小时值和分钟值的NSInteger
。 在执行此操作时,我发现我正在做的NSString
操作非常费力,感觉就像是草率的代码。
是否有一种简单的方法可以从时间值的NSString
表示中提取小时和分钟字符,并将其数值存储在两个NSInteger
?
预先感谢您的所有帮助! 我要回到它...
NSScanner* timeScanner=[NSScanner scannerWithString:...the time string...];
int hours,minutes;
[timeScanner scanInt:&hours];
[timeScanner scanString:@":" intoString:nil]; //jump over :
[timeScanner scanInt:&minutes];
NSLog(@"hours:%d minutes:%d",hours,minutes);
NSDateFormatter
将您的字符串转换为NSDate
。 [NSCalendar currentCalendar]
提取各种日期成分 (例如小时,分钟等)。 换一种说法:
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"h:m a"];
NSDate *date = [formatter dateFromString:@"12:59 pm"];
[formatter release];
NSDateComponents * components = [[NSCalendar currentCalendar] components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:date];
NSLog(@"hour: %d", [components hour]);
NSLog(@"minute: %d", [components minute]);
据我所知,这是官方的方式。 这不是很漂亮:
NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc]init] autorelease];
[dateFormatter setDateFormat:@"h:m a"];
NSDate *date = [dateFormatter dateFromString:@"12:34 am"];
[dateFormatter setDateFormat:@"h"];
NSString *hours = [dateFormatter stringFromDate:date];
[dateFormatter setDateFormat:@"m"];
NSString *minutes = [dateFormatter stringFromDate:date];
但是字符串的摆弄方式(寻找:
,寻找空间,...)从长远来看可能会给您带来更多麻烦。
NSString *time = @"1:00 am";
NSString *removeam = [time stringByReplacingOccurencesOfString:@" am" withString:@""];
SString *removepm = [removeam stringByReplacingOccurencesOfString:@" pm" withString:@""];
NSArray *timeArray = [removepm componentsSeparatedByString:@":"];
NSInteger *hour = [[timeArray objectAtIndex:0] intValue];
NSInteger *mins = [[timeArray objectAtIndex:1] intValue];
得到时间间隔并将其写为
duration.text = [NSString stringWithFormat:@"%d:%02d", (int)audioPlayer.duration / 60, (int)audioPlayer.duration % 60, nil];
如果要构建闹钟应用程序,则可能需要研究NSDate
和NSDateFormatter
类,而不是尝试将所有这些字符串分开为整数类型。 另外,您的时间范围有点怪异(也许是拼写错误?)-您不希望所有24小时都可用吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.