2012-03-23 8 views
0

のための適切なタイムスタンプを書く:私は与えられた文字列からNSDateを取得しようとしている文字列、日付

NSString* dateString = @"March 23 04:00 AM"; 
NSDateFormatter* firstDateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[firstDateFormatter setDateFormat:@"MMММ dd h:mm a"]; 
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[firstDateFormatter setLocale:locale]; 
NSDate* date = [firstDateFormatter dateFromString:dateString]; 
NSLog(@"date:%@", date); 

私はミスを犯してきたところ、私は取得しています日付がnull? 2桁の時間

+1

私は、AppleがiOS SDK用に提供しているドキュメントを読んでいないという(あまりにも一般的な)間違いをしていると思います。 –

+0

@NickBull MMMMとLLLLの違いから、問題は実際には少し難解だったので、スタックオーバーフローになってしまったのはうれしいです。 –

答えて

2

あなたが設定した日付形式の問題があります。リンゴ

によると、フォーマット文字列は、あなたのケースではUnicode Technical Standard #35

からフォーマットパターンを使用して、あなたはLLLLMMMMない月のスタンドアロンバージョンを使用する必要があります。 この行を変更する場合は、あなたのコードがうまく

[firstDateFormatter setDateFormat:@"LLLL dd hh:mm a"]; 

を動作する標準は、次のようにスタンドアローン版について説明します。

をフォーマットし、スタンドアロン フォーム間作るために最も重要な違いがありますそれを必要とする言語のための文法的な区別。 の例では、多くの言語では、 の付いた日番号のない月の名前が、基本的な名義の形式になっている必要があります。 という名前と、関連付けられた日の名前は別の 文法形式にする必要があります。共通タイプ フォーマットとスタンドアロンの区別には大文字と小文字の区別が含まれます。 しかし、これは、セクション5.19 ContextTransform Elementsで説明されているように、 要素を使用することで、別々に、より正確に制御できます。

Btw。 thisには、多くの情報が含まれており、より良い方法でdateformatterを初期化しています。

+0

偉大な答え、ありがとう!あなたは私の質問されていない質問に答えても(何がスタンドアローンの例です:)) – Stas

+0

私はなぜ私が日付を取得している理由に答えるために優しいだろう= 1970-03-23 01:00:00 +0000別のフォーマッタを使用して文字列に変換すると、3月23日の午前4時にokuch: と表示されます。つまり、何時何が起こっているのですか? – Stas

+0

@Stas、Thx、私は "スタンドアローン"を見て驚いていたので、ちょっとした根拠を入れてもいいよ:) –

0

使用hh

[firstDateFormatter setDateFormat:@"MMММ dd hh:mm a"]; 
関連する問題