Создать событие с NSDate - PullRequest
       13

Создать событие с NSDate

0 голосов
/ 18 февраля 2011

есть ли способ создать события для NSDate?вот мой код

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

например, если дата = 12 Фев;myDate .text = @ "День матери";

что-то вроде этого

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Это должно сделать это:

    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];
1 голос
/ 18 февраля 2011

уверен, что это так.Вы должны разделить дату на день и месяц, используя 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";
}
...