NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
[timeFormatter setDateStyle:NSDateFormatterNoStyle];
[timeFormatter setTimeZone:[NSTimeZone localTimeZone]];
[timeFormatter setDateFormat:@"dd/MM/YYYY HH:mm"];
NSDate *startDate = [timeFormatter1 dateFromString:@"07/10/2015 12:30"];
NSDate *EndDate = [timeFormatter1 dateFromString:@"08/10/2015 02:30"];
if([startDate compare:EndDate] == NSOrderedAscending)
return YES;
else
return NO;
我跟随上面的代码,但每次输出都是错误的结果(转到"返回No")。
同时EXP:07/10/2015 12:30至07/10/2015 23:30这是有效的。
我需要两种格式工作。
请帮帮我?
答案 0 :(得分:0)
根据NSDate比较的Apple Documentation:
返回NSComparisonResult值,该值指示接收方的时间顺序和另一个给定日期。
- (NSComparisonResult)compare:(NSDate *)anotherDate
参数anotherDate
比较接收器的日期。该值不得为零。如果值为nil,则行为未定义,并且可能在将来的Mac OS X版本中更改。
返回值
如果:
接收者和另一个日子完全相同,NSOrderedSame
接收者的时间晚于anotherDate,NSOrderedDescending
接收者的时间早于另一个日期,NSOrderedAscending 换句话说:
if ([date1 compare:date2] == NSOrderedSame) ...
请注意,在您的特定情况下,读取和写入它可能更容易:
if ([date2 isEqualToDate:date2]) ...
答案 1 :(得分:0)
问题是年份格式。使用“yyyy”代替“YYYY”来解决问题。
这是工作代码:
NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
[timeFormatter setDateStyle:NSDateFormatterNoStyle];
[timeFormatter setTimeZone:[NSTimeZone localTimeZone]];
[timeFormatter setDateFormat:@"dd/MM/yyyy HH:mm"];
NSDate *startDate = [timeFormatter dateFromString:@"07/10/2015 12:30"];
NSDate *EndDate = [timeFormatter dateFromString:@"08/10/2015 02:30"];
if([startDate compare:EndDate] == NSOrderedAscending)
NSLog(@"Ascending");
else
NSLog(@"Descending");
http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns
检查此链接以获取更多日期格式