2011-02-18 55 views
0

有沒有辦法爲NSDate創建事件?這裏是我的代碼使用NSDate創建事件

NSDate *date = [NSDate date];  
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setDateFormat:@"MMMM d, yyyy"]; 
    NSString *dateStr = [dateFormatter stringFromDate:date]; 
    myDate.text = dateStr; 

例如,如果date = 12 FEB; myDate .text = @「Mother Day」;

這樣的事情

回答

1

肯定是這樣。你必須拆分日爲日,月使用NSDateComponents

你可以寫這樣的方法:

- (BOOL)date:(NSDate *)date isSameAsDay:(NSInteger)day andMonth:(NSInteger)month { 
    NSUInteger dateFlags = NSDayCalendarUnit | NSMonthCalendarUnit; 
    NSDateComponents *components = [[NSCalendar currentCalendar] components:dateFlags fromDate:date]; 
    if ([components day] == day && [components month] == month) { 
     return YES; 
    } 
    return NO; 
} 

,你會使用這樣

if ([self date:[NSDate date] isSameAsDay:12 andMonth:2]) { 
    myDate.text = @"Mother Day"; 
} 
+0

謝謝soooo much – 2011-02-18 15:17:10

1

這應該這樣做:

NSDate *today = [NSDate date]; // Get ref to todays date 
    NSCalendar *gregorian = [[NSCalendar alloc] 
          initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *weekdayComponents = 
    [gregorian components:(NSWeekdayOrdinalCalendarUnit | NSWeekdayCalendarUnit | NSMonthCalendarUnit) fromDate:today]; 
    NSInteger weekday = [weekdayComponents weekday]; // Sun == 1, Mon == 2, Tue... 
    NSInteger weekdayOrdinal = [weekdayComponents weekdayOrdinal]; // First weekday month == 1 etc... 
    NSInteger month = [weekdayComponents month]; 
    NSLog (@"%i %i %i", weekday, weekdayOrdinal, month); 

    // Mothers day is every second Sunday of May so weekday == 1, weekdayOrdinal == 2, month == 5 
    if ((weekday == 1) && (weekdayOrdinal == 2) && (month == 5)) { 
     NSLog (@"It's mothers day!"); 
    } 
    [gregorian release];