1

このprobelmがSOで何度も議論されていることは知っていますが、どの結果も私の問題を解決しません。これがコードスニペットです。

NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSZ"];         
NSDate* date = [df dateFromString:dateTaken]; 
/* dateTaken gets its value
 from the server as 2006-01-23T20:50:27Z */

ブレークポイントを追加して確認しましたが、dateFromStringが返されnilます。日付オブジェクトを取得したら、その形式を変更して別の文字列を表示しますが、日付オブジェクト自体は取得しません。

ここでの問題は何でしょうか?

4

3 に答える 3

1

フォーマット文字列の最後の部分は次のようになります

SS'Z'

それ以外の

SSZ
于 2012-08-02T12:39:16.400 に答える
1

フォーマッターが間違っているようです。それは次のようになります:
yyyy-MM-dd'T'HH:mm:ss'Z'
2006-01-23T20:50:27Z

あなたが持っている文字列にそれを一致させてください、そして、SSZコンポーネントはありません。

編集:
他の答えを確認した後、私は自分が間違っていることに神経質になったので、次のことを試しました:
NSString* dateTaken = @"2006-01-23T20:50:27Z";
NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SS'Z'"];
NSDate* date = [df dateFromString:dateTaken]; //nil
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
date = [df dateFromString:dateTaken]; // Not nil

あなたが提供した文字列では、私が提供した2番目の形式が必要なようです。

于 2012-08-02T12:55:56.587 に答える
0

取得した形式が間違っている変換する形式を確認する

于 2012-08-02T13:07:34.233 に答える