2010-11-15 63 views
3

HI,如何在iPhone SDK中將日期顯示爲「2010年11月15日」?

我需要在iPhone SDK中顯示日期爲「2010年11月15日」。

我該怎麼做?

謝謝!

+1

事實上,幾乎可以肯定你不知道。爲了顯示日期,你應該真的使用NSDateFormatters的短日期,中日期或長日期樣式。這樣,用戶就可以控制日期的樣子,並且可以正確運行其國際化設置。 – JeremyP 2010-11-15 10:01:08

回答

1

您可以使用日期格式化爲this post解釋說:

// Given some NSDate* date 
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease]; 
[formatter setDateFormat:@"dd MMM yyyy"]; 
NSString* formattedDate = [formatter stringFromDate:date]; 

我相信你可以簡單地只是把「日」在格式字符串中的DD結束。像這樣:

@"ddth MMM yyy 

但我沒有在我面前的Mac來測試它。如果這不起作用,你可以嘗試這樣的事情:

[formatter setDateFormat:@"dd"]; 
NSString* day = [formatter stringFromDate:date]; 
[formatter setDateFormat:@"MMM yyyy"]; 
NSString* monthAndYear = [formatter stringFromDate:date]; 
NSString* date = [NSString stringWithFormat:@"%@th %@", day, monthAndYear]; 
+1

大概你想使用「st」,「nd」或「rd」而不是「th」取決於數字(當然這隻適用於英語,並且不容易定位到其他語言)。 – 2010-11-15 04:44:55

+0

然後你可以改變「th」爲一個變量,並創建一個方法,將day變量作爲參數,並返回「th」,「st」等,將新變量設置爲該值,並且我們很好。但是,我認爲這是**方式**顯示字符串的工作量太大,我只是用'@「dd MMM,yyyy」'將其顯示爲「2010年11月15日」。 :) – Joel 2010-11-15 04:49:05

+0

是的我同意「2010年11月15日」會沒事的。感謝您的快速幫助。 – meetpd 2010-11-15 05:02:15

1

我知道我回答的東西是舊的;但我做了以下。

@implementation myClass 
    + (NSString *) dayOfTheMonthToday 
     { 
     NSDateFormatter *DayFormatter=[[NSDateFormatter alloc] init]; 
     [DayFormatter setDateFormat:@"dd"]; 
     NSString *dayString = [DayFormatter stringFromDate:[NSDate date]]; 
      //yes, I know I could combined these two lines - I just don't like all that nesting 
     NSString *dayStringwithsuffix = [myClass buildRankString:[NSNumber numberWithInt:[dayString integerValue]]]; 

     NSLog (@"Today is the %@ day of the month", dayStringwithsuffix); 
    } 

+ (NSString *)buildRankString:(NSNumber *)rank 
{ 
    NSString *suffix = nil; 
    int rankInt = [rank intValue]; 
    int ones = rankInt % 10; 
    int tens = floor(rankInt/10); 
    tens = tens % 10; 
    if (tens == 1) { 
     suffix = @"th"; 
    } else { 
     switch (ones) { 
      case 1 : suffix = @"st"; break; 
      case 2 : suffix = @"nd"; break; 
      case 3 : suffix = @"rd"; break; 
      default : suffix = @"th"; 
     } 
    } 
    NSString *rankString = [NSString stringWithFormat:@"%@%@", rank, suffix]; 
    return rankString; 
} 
@end 

我一把抓起這個答案前面的類方法:NSNumberFormatter and 'th' 'st' 'nd' 'rd' (ordinal) number endings

相關問題