如何将NSDate转换为德国日期?

时间:2011-02-01 12:30:00

标签: iphone

我已经实现了一个iphone应用程序,我希望将NSDate转换为NSString但是采用德语格式。

你能给我一些想法。

我正在使用以下代码。

NSDate * date = [NSDate dateWithTimeIntervalSince1970:[[eventInfo valueForKey:@“startdat”] intValue]];

// 2011-05-01 21:04:00 +0000(我正在约会这个日期)

    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 =“Mo.,02 Mai 2011”的价值。(错误输出)

请给我一点想法

3 个答案:

答案 0 :(得分:0)

使用例如

[formatter1 setDateStyle:NSDateFormatterLongStyle];

而不是setDateFormat:

答案 1 :(得分:0)

问题是当NSDateFormatter格式化日期时会考虑时区。如果希望NSDateFormatter格式化与NSLog'd版本完全相同的日期,则需要显式设置格式化程序的时区。

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

答案 2 :(得分:0)

我不确定(根据您的问题),您的预期产量是多少。但假设您正在寻找一周中的全天描述,请尝试以下日期格式:

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

它给出了输出:

Sonntag,01 Mai 2011(使用de_DE语言环境)


通常,字符数决定了日期字段的大小:

例如。输入日期= 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个E,你会得到一个意想不到的输出:

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

对于日期格式化,我发现以下参考表非常有用。 http://www.unicode.org/reports/tr35/#Date_Field_Symbol_Table

祝你好运