2

NSDateとNSDateFormatterに1つの問題があります。

このNSStringから

NSString *startDate = @"Thu, 19 Apr 2012 13:09:56 +0000";

この「2012年4月19日木曜日13:09」のように、現在のロケールでローカライズされた日付を取得します。このコードを詳しく説明しましたが、「endDate」文字列はnilを返します(デバッガー内で「無効なCFStringRef」を取得します)。

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSDate *dateFromString = [dateFormatter dateFromString:startDate];

[dateFormatter setDateFormat:@"EEE dd MMM yyyy HH:mm"];
[dateFormatter setLocale:[NSLocale currentLocale]];

NSString *endDate = [dateFormatter stringFromDate:dateFromString];

バグはどこにありますか?

アレックス。

4

2 に答える 2

2

コードが米国以外のロケールで実行されたようです。米国以外のロケールを使用しています。私も同じnil出力を持っています。

setLocale:前にする必要があるようsetDateFormat:です。

以下のコードは問題なく動作します:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
NSLocale *usLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
于 2012-04-27T13:25:11.063 に答える
0

正しく動作しています..から削除autoreleaseしてから、dateFormatterもう一度試してください.

そして、このリンクがあなたのものと同じであることを願っています

無効な CFStringRef の問題

この回答を試して、フォーマットオプションを"ZZ"と ではなくに変更してください"ZZZ"

于 2012-04-27T11:05:38.913 に答える