【问题标题】:NSDate from NSString like HH:mm来自 NSString 的 NSDate,例如 HH:mm
【发布时间】:2012-03-18 19:32:13
【问题描述】:

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

例如,“21:00”。 我需要比较 - “时间”介于开始和结束之间 if End

我无法将@"23:00" 之类的 NSSTring 转换为 NSDate,然后我需要比较... :(

感谢您的建议;)

【问题讨论】:

  • 这就是 NSDateFormatter 的用途。或者你可以使用 NSCalendar。当然,对于您的“第二天”逻辑,您需要实际进行一些编程。
  • 对我来说很合适。你的时区是什么时候?

标签: iphone objective-c ios


【解决方案1】:

您可以将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。

【讨论】:

  • 我之前想过,但是你的例子帮助我实现了它;)非常感谢
  • 是的,没错,但我添加了 [timeFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];从格式化程序中获取正确的 NSDate
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 2013-02-21
相关资源
最近更新 更多