我想检查用户选择的日期是否与当前日期相同。我正在使用此代码。我可以检查所选日期是在过去还是将来,但我无法检测它是否相同,因为当我记录两个日期时,它是这种格式。我的意思是今天的日期时间和所选的日期时间之间存在差异。所以它被认为是更少。这是日志:
所选日期:2014-01-03 05:53:53 +0000,今日日期:2014-01-03 05:54:20 +0000
这是我的代码:
NSDate *today = [NSDate date]; // it will give you current date
NSDate *newDate = datePicker.date; // your date
NSComparisonResult result;
// has three possible values: NSOrderedSame,NSOrderedDescending, NSOrderedAscending
NSLog(@"selected date:%@ , today date: %@",newDate,today);
result = [today compare:newDate];
NSLog(@"result %d",result);
if(result==NSOrderedAscending)
{
NSLog(@"big ascending");
[AJNotificationView showNoticeInView:[[UIApplication sharedApplication] delegate].window
type:AJNotificationTypeRed
title:@"Birthdate should be less than today date."
linedBackground:AJLinedBackgroundTypeDisabled
hideAfter:GZAJNotificationDelay];
return;
}
else if(result==NSOrderedDescending){
NSLog(@"fine");
[UIView animateWithDuration:0.25 delay:0.0 options: UIViewAnimationOptionCurveEaseInOut
animations:^{
// self.view.frame=CGRectMake(0, -30, 320, 200);
subview.frame=CGRectMake(0, 640, 320, 180);
// CGRect f1;
// f1=self.view.frame;
// f1.origin.y=f1.origin.y-100;
// self.view.frame=f1;
// v1.backgroundColor=[UIColor blackColor];
}
completion:^(BOOL finished){
if(finished) {NSLog(@"Finished end !!!!!");}
}];
}
else{
NSLog(@"same");
[AJNotificationView showNoticeInView:[[UIApplication sharedApplication] delegate].window
type:AJNotificationTypeRed
title:@"Birthdate should be less than today date."
linedBackground:AJLinedBackgroundTypeDisabled
hideAfter:GZAJNotificationDelay];
return;
}
答案 0 :(得分:1)
试试这个 -
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat: @"MM-dd-yyyy"];
NSDate *date1 = [dateFormat dateFromString:firstDate];
NSDate *date2 = [dateFormat dateFromString:secondDate];
NSComparisonResult comparisonResult = [date1 compare:date2];
if(comparisonResult==NSOrderedAscending)
{
}
else if(comparisonResult ==NSOrderedDescending)
{
}
else
{
// dates are same
}
答案 1 :(得分:1)
- (BOOL)isSameDay:(NSDate *)date1 withDate2:(NSDate *)date2
{
if (nil == date1 || nil == date2) {
return NO;
}
NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents* comp1 = [calendar components:unitFlags fromDate:date1];
NSDateComponents* comp2 = [calendar components:unitFlags fromDate:date2];
return [comp1 day] == [comp2 day] &&
[comp1 month] == [comp2 month] &&
[comp1 year] == [comp2 year];
}
使用此方法比较两个日期是否在同一天。
答案 2 :(得分:0)
您需要使用以下方法转换秒数。毫秒:
long time1=[[NSDate date] timeIntervalSince1970];
long time2=[newDate timeIntervalSince1970];
之后你可以比较正常的长变量。这是一个很好的做法。
您也可以使用
if ([[NSDate date] isEqualToDate:startTime.date]) {
NSLog(@"currentDate is equal to startTime");
}
答案 3 :(得分:-1)
请与NSDateFormatter约会,并从日期中删除“时间”。 这是日期类:
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MM/dd/yyyy"];