Iphone 用于在2011年9月14日转换为2011年9月14日的日期格式化程序
我有一个字符串2011年9月14日需要转换此9月14日。此日期可以是任何日期字符串。是否有任何日期格式化程序允许我将日期转换为我的格式。如果日期是2011年9月1日,那么我需要9月1日,2011年9月2日应该是9月2日 谁能提出解决办法 谢谢使用它Iphone 用于在2011年9月14日转换为2011年9月14日的日期格式化程序,iphone,nsdate,nsdateformatter,Iphone,Nsdate,Nsdateformatter,我有一个字符串2011年9月14日需要转换此9月14日。此日期可以是任何日期字符串。是否有任何日期格式化程序允许我将日期转换为我的格式。如果日期是2011年9月1日,那么我需要9月1日,2011年9月2日应该是9月2日 谁能提出解决办法 谢谢使用它 NSString *string =@"14-Sep-2011"; NSArray *arr = [string componentsSeparatedByString:@"-"]; NSString *str1=[arr
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]];
您可以尝试以下代码,因为我已成功运行
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);
这是您想要的完美解决方案。-(NSString*)ordinalSuffixFromInt:(int)number{
- (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;
}
NSArray*cSfx=[NSArray阵列,其对象为:@“th”,“st”,“nd”,“rd”,“th”,“th”,“th”,“th”,“th”,“th”,“th”,“th”,“th”,“nil];
NSString*后缀=@“th”;
数量=abs(数量%100);
如果((数量<10)| |(数量>19)){
后缀=[cSfx objectAtIndex:number%10];
}
返回后缀;
}
测试:
-(无效)测试{
对于(int day=1;day这将适用于任何数字:
-(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]);
}
-(无效)测试{
对于(NSInteger i=1;i<200;i++)
NSLog(@“%d%”,i,[self-ordinalSuffix:i]);
}
类似的问题此日期从何而来?my be any date string
有很多可能的字符串要尝试解析!如果是后缀(st、nd等)你在后面,那么Joe链接到的问题有了答案。任何日期都意味着任何日历日期..格式将是相同的dd-mmm-yyyy..我不想分析这个。我想知道是否有任何带有NSDateFormatter
的格式可以用来获取dd(st/nd/rd/th)mmmm格式字符串或我必须编写手动逻辑。这不是完美的解决方案。因为每个日期都不接受th
一些要求st
,nd
,rd
。我可以按照您所说的检查条件,但我想知道是否有任何NSDateFormatter
格式要设置。很高兴您能遵循查看重复问题/答案的链接,即使提交者不能;-)如果我看一下这个问题的分配金额,这看起来不是一个完美的解决方案,meDate 11的分配是第11位,而不是第11位。12、13等也一样。你可以看到@Zaph我已经标记好了。一个月的最长日期可能是31号。你的解决方案不适用于此。无论如何,谢谢你的回复:)
-(void) test {
for(NSInteger i = 1; i < 200; i++)
NSLog(@"%d%@", i, [self ordinalSuffix:i]);
}