我有一个字符串14-9月-2011在需要转换这个9月14日。此日期可以是任何日期字符串。有没有什么日期格式化工具可以让我把日期转换成我的格式。如果日期是2011年9月1日,那么我需要2011年9月1日,2011年9月2日应该是9月2日。
有没有人能建议一下解决方案。
谢谢
发布于 2011-09-14 22:43:29
- (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]);
}
}发布于 2011-09-14 22:04:21
您可以尝试以下代码,因为我运行成功。
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);这是您想要的完美解决方案。
发布于 2012-08-08 07:05:20
这将适用于任何数字:
-(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]);
}https://stackoverflow.com/questions/7416865
复制相似问题