2015-03-31 52 views
0

我可以通过使用子串打破字符串来做到这一点,但应该有一些方法来解析特定格式的字符串并获得所需的值。解析时间PT ## H ## M到NSDate

请帮助我,如果有任何其他简单和优雅的方式来做到这一点。

[更新] 这是我正在做使用字符串:

NSRange ptRange = [timeString rangeOfString:@"T"]; 
NSRange hRange = [timeString rangeOfString:@"H"]; 
NSRange mRange = [timeString rangeOfString:@"M"]; 

NSString *hours = nil; 
if (hRange.location != NSNotFound) { 
    hours = [timeString substringWithRange:NSMakeRange(ptRange.location+ptRange.length, hRange.location-(ptRange.location+ptRange.length))]; 
} 
else { 
    hRange = ptRange; 
} 

NSString *minutes = nil; 
if (mRange.location != NSNotFound) { 
    minutes = [timeString substringWithRange:NSMakeRange(hRange.location+hRange.length, mRange.location-(hRange.location+hRange.length))]; 
} 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"HH:mm"]; 
NSDate*date = [df dateFromString:[NSString stringWithFormat:@"%d:%d",hours.integerValue,minutes.integerValue]]; 
+0

显示哪些尝试你已经使用'做NSDateFormatter'。 – rmaddy 2015-03-31 19:08:32

+0

为什么所有的字符串处理?只需指定一个与原始字符串匹配的日期格式即可。 – rmaddy 2015-03-31 19:41:40

回答

0

截至目前我的实现是这个问题的答案

NSRange ptRange = [timeString rangeOfString:@"T"]; 
NSRange hRange = [timeString rangeOfString:@"H"]; 
NSRange mRange = [timeString rangeOfString:@"M"]; 

NSString *hours = nil; 
if (hRange.location != NSNotFound) { 
    hours = [timeString substringWithRange:NSMakeRange(ptRange.location+ptRange.length, hRange.location-(ptRange.location+ptRange.length))]; 
} 
else { 
    hRange = ptRange; 
} 

NSString *minutes = nil; 
if (mRange.location != NSNotFound) { 
    minutes = [timeString substringWithRange:NSMakeRange(hRange.location+hRange.length, mRange.location-(hRange.location+hRange.length))]; 
} 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"HH:mm"]; 
NSDate*date = [df dateFromString:[NSString stringWithFormat:@"%d:%d",hours.integerValue,minutes.integerValue]];