2014-08-29 66 views
1

我爲我的iOS項目使用DSLCalenderview。我需要填寫DSLCalenderview的日期。我將特定日期存儲在NSMutablearray中,並將其與日期對象進行比較。該DSLCalenderview代碼:如何編譯兩個NSDates?

- (void)drawBackground { 
    NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init]; 
    [dateformatter setTimeZone:[NSTimeZone systemTimeZone]]; 
    //[dateformatter setLocale:[NSLocale currentLocale]]; 
    [dateformatter setDateFormat:@"MMMM yyyy dd HH:mm:ss Z"]; 
    if (self.selectionState == DSLCalendarDayViewNotSelected) { 
     user=[[NSUserDefaults alloc] init]; 

     NSUInteger flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; 
     NSCalendar *calendar = [NSCalendar currentCalendar]; 

     NSDateComponents *components = [calendar components:flags fromDate:[self.day date]]; 

     NSDateComponents *componentsOfToday = [calendar components:flags fromDate:[NSDate date]]; 

     date = [calendar dateFromComponents:components]; 

     dateToday = [calendar dateFromComponents:componentsOfToday]; 

     if (self.isInCurrentMonth) { 

      /* 
      for (int i=0;i<datearray.count;i++) { 

       dateSelected=[dateformatter dateFromString:[datearray objectAtIndex:i]]; 
      } 


      if ([date isEqualToDate:dateSelected]) { 

       NSLog(@"date selected......... %@",dateSelected); 



       } 
      */ 

     // NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); 
      if ([date isEqualToDate:dateToday]) { 
      // NSLog(@"inside today......... %@",dateToday); 
       [[UIColor redColor] setFill]; 
       //from now current day is colored 
      } 
      else { 

       //NSLog(@"date selected %@",dateSelected); 
       [[UIColor colorWithWhite:245.0/255.0 alpha:1.0] setFill]; 
      } 

     } 
     else { 

      // NSLog(@"++++++++++++++++++++++++++++++"); 
      if ([date isEqualToDate:dateToday]) { 

       [[UIColor greenColor] setFill]; 

      } 
      else { 

       [[UIColor colorWithWhite:225.0/255.0 alpha:1.0] setFill]; 
      } 

      for (int i=0;i<datearray.count;i++) { 

       dateSelected=[dateformatter dateFromString:[datearray objectAtIndex:i]]; 
       NSLog(@"date %@ dateselected %@",date,dateSelected); 
       NSDateComponents *selected=[calendar components:flags fromDate:dateSelected]; 
       dateSelected=[calendar dateFromComponents:selected]; 
       NSLog(@"date %@ dateselected %@",date,dateSelected); 
       if ([date isEqualToDate:dateSelected]) { 
        NSLog(@"inside loop"); 
        [[UIColor grayColor]setFill]; 
       } 
      } 


     } 
     UIRectFill(self.bounds); 
    } 
    else { 
     switch (self.selectionState) { 

      case DSLCalendarDayViewNotSelected: 

       NSLog(@"DSLCalendarDayViewNotSelected>>>>+++"); 

       break; 

      case DSLCalendarDayViewStartOfSelection: 

       NSLog(@"DSLCalendarDayViewStartOfSelection>>>>+++"); 
       [[[UIImage imageNamed:@"DSLCalendarDaySelection-left"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 20, 20, 20)] drawInRect:self.bounds]; 

       break; 

      case DSLCalendarDayViewEndOfSelection: 
       NSLog(@"DSLCalendarDayViewEndOfSelection>>>>+++"); 

       [[[UIImage imageNamed:@"DSLCalendarDaySelection-right"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 20, 20, 20)] drawInRect:self.bounds]; 
       break; 

      case DSLCalendarDayViewWithinSelection: 

       NSLog(@"DSLCalendarDayViewWithinSelection>>>>+++"); 



       [[[UIImage imageNamed:@"DSLCalendarDaySelection-middle"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 20, 20, 20)] drawInRect:self.bounds]; 
       break; 

      case DSLCalendarDayViewWholeSelection: 

       NSLog(@" DSLCalendarDayViewWholeSelection"); 


       NSLog(@"day select %@",selectedday); 
       [[NSUserDefaults standardUserDefaults] setObject:selectedday forKey:@"day"]; 
       [[NSUserDefaults standardUserDefaults]synchronize]; 


       [[[UIImage imageNamed:@"DSLCalendarDaySelection"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 20, 20, 20)] drawInRect:self.bounds]; 

       break; 
     } 
    } 
} 
+0

在此我們來看一看: http://stackoverflow.com/questions/6112075/ios-compare-two-dates – Signo 2014-08-29 07:14:43

回答

1

我想我找到我的答案

for (int i=0;i<datearray.count;i++) { 

      dateSelected=[dateformatter dateFromString:[datearray objectAtIndex:i]]; 
      NSLog(@"date %@ dateselected %@",date,dateSelected); 
      NSDateComponents *selected=[calendar components:flags fromDate:dateSelected]; 
      dateSelected=[calendar dateFromComponents:selected]; 
      NSLog(@"date %@ dateselected %@",date,dateSelected); 
      if ([dateSelected isEqualToDate:date]) { //just swapped values and date will be highlighted 
       NSLog(@"inside loop"); 
       [[UIColor grayColor]setFill]; 
      } 
     } 
0

下面是比較在我的應用程序。至於我得到的字符串從網絡服務的一個日期,第二個是當前日期的一個使用兩個日期的示例代碼。

NSString *dateStr;//get the date in string here 
dateStr=[dateStr substringToIndex: MIN(10, [dateStr length])]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 

NSDate *myEventDate =[[NSDate alloc]init]; 
NSDate *currentDate =[[NSDate alloc]init]; 

//has three possible values: NSOrderedSame,NSOrderedDescending, NSOrderedAscending 

myEventDate=[dateFormatter dateFromString:dateStr]; 

//NSLog(@"my Event Date is: %@",myEventDate); 
//NSLog(@"current Date %@",currentDate); 

NSComparisonResult result = [currentDate compare:myEventDate]; 

switch (result) 
{ 
    case NSOrderedAscending: 

     // NSLog(@"Future Date"); 
     break; 

    case NSOrderedDescending: 

     //NSLog(@"Earlier Date"); 
     break; 
    case NSOrderedSame: 
     //NSLog(@"Today/Null Date Passed"); //Not sure why This is case when null/wrong date is passed 
     break; 
    default: 
     // NSLog(@"Error Comparing Dates"); 
     break; 
}