我有以下的代码,在那里我比较两个字符串,但其引发异常。
- (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)d {
NSLog(@"calendarMonthView didSelectDate %@",d);
//[self papulateTable];
//[table reloadData];
//[self performSelector:@selector(papulateTable) withObject:nil afterDelay:1.0];
NSString *tempDate = (NSString*)d;
NSString *selectedDate = @"2013-02-04 00:00:00 +0000";
if([tempDate isEqualToString:selectedDate])
{
flagtoCheckSelectedCalendarDate = 1;
}
if(flagtoCheckSelectedCalendarDate == 1)
{
[self viewDidLoad];
}
if(flagtoCheckSelectedCalendarDate == 2)
{
[self viewDidLoad];
}
//[table reloadData];
}
可以在任何一个请suggest.Thanks。
铸造NSDate
对象NSString
不会使它的字符串。 要比较日期,你将不得不变换NSString
成NSDate
使用NSDateFormatter
。 在这之后,你可以使用的NSDate的实例方法isEqualToDate:
您比较。
NSString *selectedDate = @"2013-02-04 00:00:00 +0000";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-DD hh:mm:ss ZZZZ"];
NSDate *actualDate = [dateFormatter dateFromString:selectedDate];
if ([actualDate isEqualToDate:d]) {
...
}
d
是类型NSDate
和不NSString
,因此-isEqualToString:
在碰撞的结果。
你不应该在此比较字符串,但日期。 使用的NSDate的-compare:
方法和变化
NSString *selectedDate = @"2013-02-04 00:00:00 +0000";
至
NSDate *selectedDate = [NSDate ...];
您是铸造一个NSDate对象的NSString而不转换它。 你必须将格式化的NSDate作为字符串到您的预期日期格式,然后才能与你的selectedDate进行比较。 见这以前的答案还是这一个为例子
您比较NSDate
和NSString
。 你将需要改变NSDate
首先使用的日期格式字符串。