2011-02-01 44 views
0

我已經實現了一個iphone應用程序,我想將NSDate轉換爲NSString,但採用德語格式。如何將NSDate轉換爲德語日期?

你能給我一些關於這個的想法。

我正在使用下面的代碼。我們可以使用NSDate * date = [NSDate dateWithTimeIntervalSince1970:[[eventInfo valueForKey:@「startdat」] intValue]];} [

// 2011-05-01 21點04分00秒+0000(我geeting當日)

NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init]; 
    NSLocale *nl_NL = [[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"]; 

     [formatter1 setDateFormat:@"E,dd MMM yyyy"]; 
    [formatter1 setLocale:nl_NL]; 

    NSString *stringFromDate1 = [formatter1 stringFromDate:date]; 
    [formatter1 release]; 
    [nl_NL release]; 

//我得到stringFromDate1 = 「密蘇里州,02麥2011」 值。(錯誤輸出)

請給我的想法

+0

nl_NL =荷蘭語,但你爲它分配德文場所? – dreamlax 2011-02-01 12:43:15

+0

@dreamlax,我同意,本地應該是de_DE = Deutsch,即我認爲的德語。 – 2011-02-01 21:04:44

回答

0

使用例如

[formatter1 setDateStyle:NSDateFormatterLongStyle]; 

,而不是setDateFormat:

+0

但是這給了我錯誤的輸出我的NSDate是不同的比較輸出字符串 – JohnWhite 2011-02-01 12:41:57

0

問題是當NSDateFormatter格式化日期時考慮了時區。如果您希望NSDateFormatter格式化與NSLog ' d版本完全相同的日期,則需要明確設置格式化程序的時區。

[formatter1 setDateFormat:@"E,dd MMM yyyy"]; 
[formatter1 setLocale:nl_NL]; 
[formatter1 setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
0

我不知道(從你的問題),你的預期輸出是什麼。但是,假設你正在尋找本週描述的一天,試試這個日期格式:

[dateFormatter setDateFormat:@"EEEE, dd MMM yyyy"]; 

它給人的輸出:

桑塔格,麥01 2011(使用de_DE這個locale)


通常,字符數決定了日期字段的大小:

例如,輸入日期= 2011-05-01星期日

1個字符= 1位數/字符編號或單詞(如果編號/單詞不能爲1個字符,則顯示縮寫或全名)。

[dateFormatter setDateFormat:@"E, d M y"]; // Sun, 1 5 2011 

2個字符= 2位數字/字符編號或單詞(如果編號/單詞不能長於2個字符,則縮寫顯示)。

[dateFormatter setDateFormat:@"EE, dd MM yy"]; // Sun, 01 05 11 

3字符= 3位數/字符數字或單詞或縮寫(一般)。

[dateFormatter setDateFormat:@"EEE, ddd MMM yyy"]; // Sun, 001 May 2011 

4個字符=全名(一般)。

[dateFormatter setDateFormat:@"EEEE, dddd MMMM yyyy"]; // Sunday, 0001 May 2011 

這裏的怪異的一部分不過,如果你指定5克鄂氏,你會得到一個相當意外的輸出:

[dateFormatter setDateFormat:@"EEEEE, ddddd MMMMM yyyyy"]; // S, 00001 M 2011 

日期格式,我發現下面的參考表是非常有用的。 http://www.unicode.org/reports/tr35/#Date_Field_Symbol_Table

好運