2011-02-01 59 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

好运