2011-11-09 12 views
0

Xcode 4以前はNSDate initFromStringを使用していましたが、Xcode 4.2ではエラーが発生しています。だから私はNSDateFormatter dateFromStringを使って飛び乗りましたが、文字列からの日の出日と文字列からの日時を取得して呼び出す方法で問題に遭遇しました。最初の呼び出しは正常に動作しますが、2番目の呼び出しはnilを返します。私は、私は次の簡単な方法を作成し、無害な場所に別のプロジェクトにそれをダンプし、それが再現可能だったかどうかを確認することにしました。NSDateFormatter dateFromStringは、同じメソッドで最初に呼び出した後にnilを生成します

- (void)testDateFormatter 
    { 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 

    [formatter setDateFormat: @"yyyy-MM-dd hh:mm:ss Z"]; 
    NSString *srDateTimeString = @"2011-11-09 07:08:00 -0800"; 
    NSString *ssDateTimeString = @"2011-11-09 17:08:00 -0800"; 

    NSDate *sunriseDateTime = [formatter dateFromString: srDateTimeString]; 
    NSDate *sunsetDateTime = [formatter dateFromString: ssDateTimeString]; 

    return; 
    } 

最初の呼び出しは、正しい日付を返します。 2番目の呼び出しはnilを返します。私はいくつかのバリエーションを試みました(2つの別々のNSDateFormattersの作成、日付の事前初期化、日付の事前初期化と再割り当てなど)。

ここで何が起こっているのか分かりませんか?このエラーのどこにも何の参照も見つからなかったので、私はAppleにそれを提出しました(バグ#10420498)。

第2ストリングにジャック

+0

私が編集していたとき、私はあなたがtestDateFormatterの後にa()を持っていないのを見ました。それはタイプミスのようでしたので、修正しました。ちょうどあなたが知っているので。 –

+0

@Anders、それはタイプミスではありませんでしたが、Objective-Cは引数リストをかっこで囲んでいません。 – goldfire

+0

明確にするために、2つの別々のNSDateFormatterオブジェクトを作成し、dateFromString _separately_と2つの別々の文字列の両方を送信しましたが、これはまだ発生していますか? – goldfire

答えて

3

、時間は17(24時間形式)であるが、書式文字列は、12時間形式のためのものであるhh(小文字)を使用します。

フォーマット文字列をyyyy-MM-dd HH:mm:ss Zに変更します。

ドキュメントには、Date Formattersを参照してください。Unicode Date Format Patternsには、各フォーマット指定子のリストが含まれています。

+0

さて、私は愚かだと感じますが、訂正に感謝します。それはもちろん大丈夫です。 initFromStringがまだ動作していて、24時間制のhhがまだ動作していた可能性はありますか?私は、Unicodeの日付書式パターンドキュメントへのリンクを自分のコードドキュメントの中に置いているので(それがどこにあるのか把握する必要がないように)尋ねるだけです。とにかく、私は今、私のバグをAppleに取り消すつもりです。 – Jack

+0

これで答えを受け入れることを検討する必要があります。 – thesummersign

関連する問題