2012-01-17 8 views
1

これは何度も求められていますが、私はいつもNSDateでnullになってしまいます。私はこのような文字列を持っています "January 16、2012 21:44:56"私はそれを "January 16、2012 09:44:56 PM"に変換したいと思います。変換された日付にPMを追加し、24時間形式を12時間形式に変換したい。ここに私のコードです。NSString to NSDate nullを取得し続ける

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"MMMM dd, YYYY HH:ii:ss a"]; 

    NSDate *dateFromString = [[NSDate alloc] init]; 
    dateFromString = [dateFormatter dateFromString:dateString]; 
+3

'NSDate'は、' dateFromString: 'メソッドから返された新しいNSDateをassassするときに漏れるので、' NSDate'を割り当てる/初期化する必要はありません。ちょうど 'NSDate * dateFromString = [dateFormatter dateFromString:dateString];' – rckoenes

答えて

2

Ali3nが正しく指摘したように、あなたは最初の有効な日付オブジェクトを取得するには、フォーマッタにdateStringの書式を設定する必要があります。次に、フォーマッタのフォーマットを目的のフォーマットに設定して、続行する必要があります。

NSString *dateString = @"January 16, 2012 21:44:56"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MMMM dd, yyyy HH:mm:ss"]; 

NSDate *dateFromString; 
dateFromString = [dateFormatter dateFromString:dateString]; 

[dateFormatter setDateFormat:@"MMMM dd, YYYY HH:mm:ss a"]; 
NSString *stringFromDate = [dateFormatter stringFromDate:dateFromString]; 
+0

ありがとう男!出来た。 – Diffy

2

@"MMMM dd, YYYY HH:ii:ss a"このフォーマットは

1

は、書式文字列でリテラルをエスケープしてみてください。.. ypuは日付フォーマッタに渡している日付と一致する必要があります。

[dateFormatter setDateFormat:@"MMMM dd',' YYYY HH:ii:ss a"]; 
2

フォーマット文字列にエラーがあります。また、日付文字列が表示されているロケールをフォーマッタに伝える必要があります。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; 
[dateFormatter setDateFormat:@"MMMM dd, yyyy HH:mm:ss a"]; 

NSDate *dateFromString = [dateFormatter dateFromString:dateString]; 
[dateFormatter release], dateFormatter = nil; 

あなたの入力に日付の名前があるので、ローカルを設定することは非常に重要です。 NSDateFormatterには、その言語の名前を教えてください。与えられた例では英語で書かれています。私は言語を英語に設定していないデバイスでローカルを設定せずにコードを実行しましたが、英語の日付を解析できません。

0

要件については、dateFormatterを変更する必要があります。このlinkを確認してください。

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MMMM dd, YYYY hh:mm:ss a"]; 
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; 
[dateFormatter release]; 
NSLog(@"%@",dateString); 
+0

hhは12時間の時計に使用されます –