Форматирование даты для конвертации 14 сентября 2011 в 14 сентября - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть строка 14-Sep-2011. Необходимо преобразовать 14-е сентября. Эта дата может быть любой строкой даты. Есть ли какой-либо форматер даты, который позволяет мне конвертировать дату в моем формате. Как будто дата 1 сентября 2011 года, то мне нужно 1 сентября, 2 сентября 2011 года следует сказать 2 сентября

Может кто-нибудь предложить решение.

Спасибо

Ответы [ 4 ]

2 голосов
/ 14 сентября 2011
- (NSString *)ordinalSuffixFromInt:(int)number {
    NSArray *cSfx = [NSArray arrayWithObjects:@"th", @"st", @"nd", @"rd", @"th", @"th", @"th", @"th", @"th", @"th", nil];
    NSString *suffix = @"th";

    number = abs(number % 100);
    if ((number < 10) || (number > 19)) {
        suffix = [cSfx objectAtIndex:number % 10];
    }
    return suffix;
}

Тест:

- (void)test {
    for (int day=1; day<=31; day++) {
        NSLog(@"ordinal: %d%@", day, [self ordinalSuffixFromInt:day]);
    }
}
0 голосов
/ 08 августа 2012

Это будет работать для любого числа:

 -(NSString *) ordinalSuffix: (NSInteger) day {
    NSString *ordinalSuffix;

    if(day%10 == 1 && day%100 != 11) ordinalSuffix = @"st";
    else if(day%10 == 2 && day%100 != 12) ordinalSuffix = @"nd";
    else if(day%10 == 3 && day%100 != 13) ordinalSuffix = @"rd";
    else ordinalSuffix = @"th";

    return ordinalSuffix;
 }

Тест:

 -(void) test {
     for(NSInteger i = 1; i < 200; i++)
         NSLog(@"%d%@", i, [self ordinalSuffix:i]);
 }
0 голосов
/ 14 сентября 2011

Вы пытаетесь использовать следующий код, потому что я успешно запускаюсь.

    NSString *dateStr = @"14-Sep-2011";
    NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
    [dtF setDateFormat:@"dd-MMM-yyyy"];
    NSDate *d = [dtF dateFromString:dateStr];
    NSDateFormatter *monthDayFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [monthDayFormatter setFormatterBehavior:NSDateFormatterBehaviorDefault];
    [monthDayFormatter setDateFormat:@"d MMM"];         
    int date_day = [[monthDayFormatter stringFromDate:d] intValue];      
    NSString *suffix_string = @"|st|nd|rd|th|th|th|th|th|th|th|th|th|th|th|th|th|th|th|th|th|st|nd|rd|th|th|th|th|th|th|th|st";
    NSArray *suffixes = [suffix_string componentsSeparatedByString: @"|"];
    NSString *suffix = [suffixes objectAtIndex:date_day];   
    NSString *format = [NSString stringWithFormat:@"%d",date_day];
    NSString *dateStrfff = [format stringByAppendingString:suffix];
    NSLog(@"%@", dateStrfff);
    [monthDayFormatter setDateFormat:@"MMM"];
    NSString *ss = [monthDayFormatter stringFromDate:d];
    NSLog(@"%@",ss);

    NSString *final = [dateStrfff stringByAppendingString:ss];
    NSLog(@"final string:---> %@",final);

Это идеальное решение, которое вам нужно.

0 голосов
/ 14 сентября 2011

используйте это

     NSString *string =@"14-Sep-2011";
    NSArray *arr = [string componentsSeparatedByString:@"-"];
    NSString *str1=[arr objectAtIndex:0];
    str1=[str1 stringByAppendingString:@"th"];
    NSString *final=[str1 stringByAppendingFormat:@" %@",[arr objectAtIndex:1]];
...