2011-02-01 8 views
0

私はNSDateをNSStringに変換するが、ドイツ語の形式で1つのiphoneアプリケーションを実装している。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" の値を取得しています。(間違った出力)

は、アイデアに私に

[formatter1 setDateStyle:NSDateFormatterLongStyle]; 

代わりにsetDateFormat:例えば

+0

nl_NL =オランダ語、しかし、あなたはそれをドイツ語のロケールを割り当てますか? – dreamlax

+0

@dreamlax、私は同意する、de_DE = Deutsch、すなわちドイツ語だと思う。 –

答えて

0

使用をお願いします。

+0

しかし、これは私の間違った出力を与える私のNSDateは、出力文字列と比較して異なります – JohnWhite

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"]; 

これは、出力を与える:しかし、あなたは週記述の完全な一日を探していることを、この日付フォーマットを試すと仮定(de_DEのロケールを使用して)

ゾンターク、01舞2011


一般に、文字数によって日付フィールドのサイズが決まります。

例:入力日付= 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:@"EEEEE, ddddd MMMMM yyyyy"]; // S, 00001 M 2011 

は、日付の書式については、私は以下の参照テーブルは非常に便利:あなたは5つのE年代を指定した場合

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

はここでは、しかし奇妙な部分です、あなたはかなり予想外の出力を取得します。 http://www.unicode.org/reports/tr35/#Date_Field_Symbol_Table

幸運

+0

問題は、日付の形式ではありませんが、彼のNSDateオブジェクトは2011年5月1日を示していますが、 5月の*。 – dreamlax

+0

元のコードを再度読み、問題を見ました。あなたの解決策は、NSDateオブジェクトがユーザーの現在のタイムゾーン(ヨーロッパ中部標準時または入力文字列に示されているようにGMTに設定されていない可能性があります)で初期化されるため機能します。タイムゾーンを正しいものに設定すると、問題が解決する場合があります。乾杯。 – Cybersam

関連する問題