来自NSString的NSDate,如HH:mm

时间:2012-03-18 19:32:13

标签: iphone objective-c ios

我有一个字符串 - 时间,开始,结束:格式“hh:mm”

例如,“21:00”。 我需要比较 - “时间”落在开始和结束之间 如果结束<例如,开始(“21:10”“10:00”)应被视为:从第二天的“开始”到“结束”。

我无法将NSSTring像@“23:00”转换为NSDate,然后我需要比较...... :(

感谢您的建议;)

1 个答案:

答案 0 :(得分:2)

您可以将HH:mm类型的字符串转换为NSDate。如果endDate 小于而不是startDate,则为其添加一天。

NSString *dateString = @"23:00";
NSString *startString = @"21:00";
NSString *endString = @"10:00";

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"HH:mm";

NSDate *date = [formatter dateFromString:dateString];
NSDate *startDate = [formatter dateFromString:startString];
NSDate *endDate = [formatter dateFromString:endString];
if ([endDate compare:startDate] == NSOrderedAscending) {
    endDate = [endDate dateByAddingTimeInterval:24*3600];
}

if ([startDate compare:date] == NSOrderedAscending && [date compare:endDate] == NSOrderedAscending) {
    NSLog(@"Date %@ is in the interval [%@, %@]", dateString, startString, endString);
} else {
    NSLog(@"Date %@ is not in the interval [%@, %@]", dateString, startString, endString);
}

PS。我假设在这里使用ARC。