1

文字列を取得して日付に変換し、再フォーマットしてから別の文字列として吐き出すコードがあります。

[formatter setDateFormat:@"YYYY'-'MM'-'DD','HH:mm:ss','ZZZ"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
NSDate *date = [formatter dateFromString:combinedString];
[formatter setDateStyle:NSDateFormatterLongStyle];
NSString *finishedString = [formatter stringFromDate:date];

基本的に、タイムゾーンを除いて問題なく動作します。すべての入力文字列はタイムゾーン -0400 にあり、再フォーマットされた文字列もそのタイムゾーンにあるようにしたいのですが、setTimeZone:行を追加した後でも、再フォーマットされた文字列は 4 時間前に変換され続けます。基本的に、私は時間をまったく変更したくありません。ただ再フォーマットしたいだけで、何が間違っているのか理解できませんか?

4

2 に答える 2

2

それはあなたの日付のソースで指定されたフォーマットに依存します。ほとんどの場合、私はUnix/POSIX形式の日付を扱います。次に、次の2行のコードを使用します。

[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[formatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];

とにかく、Apple Developersサイトから次のQ&Aを確認することをお勧めします:http: //developer.apple.com/library/ios/#qa/qa1480/_index.html

于 2012-10-07T20:50:14.707 に答える