2012-01-13 19 views
-1

文字列から日付を書式化する必要があります。NSDate奇妙な動作をフォーマットする

NSString *str = @"Fri, 13 Jan 2012 12:25:49 +0000"; 
NSLog(@"String: %@", str); 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZZ"]; 
NSDate *datefrom = [df dateFromString:str]; 
NSLog(@"NSDate: %@", datefrom); 
[df setDateFormat:@"dd/MM/yyyy"]; 
str = [df stringFromDate:datefrom]; 
NSLog(@"Formated String: %@", str); 

しかし、私は異なる日付をフォーマットすることができるようにしたいので、それは無用だ:私は、このようにそれを行うことができます。だから私がこれをするとき:

NSString *str = [[stories objectAtIndex:0] objectForKey:@"date"]; 
NSLog(@"String: %@", str); 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZZ"]; 
NSDate *datefrom = [df dateFromString:str]; 
NSLog(@"NSDate: %@", datefrom); 
[df setDateFormat:@"dd/MM/yyyy"]; 
str = [df stringFromDate:datefrom]; 
NSLog(@"String Formatada: %@", str); 

それは単に動作しません。私は[[stories objectAtIndex:0] objectForKey:@ "date"]の出力をチェックし、それは@ "Fri、13 Jan 2012 12:25:49 +0000"と全く同じ文字列です。

私は2つの文字列私が間違ってそれらを読んでいないかどうかを確認する。

if ([[[stories objectAtIndex:0] objectForKey:@"date"] isEqualToString:@"Fri, 13 Jan 2012 12:25:49 +0000"]) { 
    NSLog(@"They are the same"); 
} 
else NSLog(@"They are NOT the same"); 

をしかし、彼らは、彼らが視覚的にまったく同じだにも関わらず、出力として「彼らは同じではありません」私は常に取得するため、同じように見えるしません:。ここで私が比較するために使用されるコードです何か案が?

+1

あなたが実際に何のNSLog文から取得している値が何を言ってください。あなたはNSDateオブジェクトを印刷して、それがフォーマットされることを期待しているようです。 NSDateFormatterは書式設定された文字列を生成(または読み込み)しますが、NSDateの 'decription'形式(NSDateを直接ログに記録するときや診断ダンプのみを対象とする)は変更されません。 –

+0

NSCFString –

+0

あなたは 'NSLog(@" Class:%@ "、[[[storyArtIndex:0] objectForKey:@" date "]クラス]);上記の文の後にどこにログしたのですか? (要素 "日付"が設定されている場所は決して表示されません。その要素の値をNSDateの抽出元として使用していますが、日付の書式設定の結果は表示されません)。 –

答えて

0

[[stories objectAtIndex:0] objectForKey:@ "date"]によって返されるオブジェクトがNSStringであり、NSDateオブジェクトではありませんか?あなたがログに記録するときに同じように見えるかもしれないので、ログすることでできるタイプを確認するしかありません:

NSLog(@ "%@"、NSStringFromClass([str class]));

+0

このコードの出力は次のとおりです。__NSCFString –

0

同じでない場合は、dateFormatterではなくstringです。

いただきました。この上のNSLog():

NSString *str = [[stories objectAtIndex:0] objectForKey:@"date"]; 
NSLog(@"String: %@", str); 
+0

問題は、文字列の最後に3つの空白があります。そういうわけで、彼らはコンピュータでは違いますが、私にとっては違います。今それは働いている! –