首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于转换2011年9月14日的日期格式化程序

用于转换2011年9月14日的日期格式化程序
EN

Stack Overflow用户
提问于 2011-09-14 21:11:16
回答 4查看 1.2K关注 0票数 2

我有一个字符串14-9月-2011在需要转换这个9月14日。此日期可以是任何日期字符串。有没有什么日期格式化工具可以让我把日期转换成我的格式。如果日期是2011年9月1日,那么我需要2011年9月1日,2011年9月2日应该是9月2日。

有没有人能建议一下解决方案。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-14 22:43:29

代码语言:javascript
复制
- (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;
}

测试:

代码语言:javascript
复制
- (void)test {
    for (int day=1; day<=31; day++) {
        NSLog(@"ordinal: %d%@", day, [self ordinalSuffixFromInt:day]);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2011-09-14 22:04:21

您可以尝试以下代码,因为我运行成功。

代码语言:javascript
复制
    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
EN

Stack Overflow用户

发布于 2012-08-08 07:05:20

这将适用于任何数字:

代码语言:javascript
复制
 -(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;
 }

测试:

代码语言:javascript
复制
 -(void) test {
     for(NSInteger i = 1; i < 200; i++)
         NSLog(@"%d%@", i, [self ordinalSuffix:i]);
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7416865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档