1

JSON形式でデータを返す.NETRESTサービスがあります。1つのフィールドは、UTCでの日時です。これは次のようになります。

"Synced":"2012-07-11T13:28:42.967"

iOSアプリケーションでこの日付を取得しようとしていますが、試行するたびにnullが発生します。

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter  setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
NSArray *dateFormatters = [[NSArray alloc]initWithObjects:dateFormatter, nil];
[RKObjectMapping setDefaultDateFormatters:dateFormatters];

私が間違っていることは何ですか?ありがとう!

4

3 に答える 3

5

日付の形式は次のとおりです。yyyy-MM-dd'T'HH:mm:ss.SSS

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
于 2012-07-12T09:07:37.977 に答える
3

関連するRestKit/NSDateの問題に関する将来の覗き見について:

呼び出しているRESTfulAPIが、末尾に.SSS(ミリ秒など)が追加された日付形式を返す場合、RestKitはこの形式をそのままでは正しくサポートしないことに注意してください。問題は、RestKitが日付を標準の日付形式として認識しないことです。

私の設定では、これによって明示的なエラーが発生することはありませんでした。これは、RestKitが間違ったタイムゾーンの時刻を解釈したことを意味します。iOSの日付フォーマッターが正しく機能するには、NSDatesをUTCで保存する必要がありますが、RestKitはすべての日付を@ "yyyy-MM-dd'T'HH:mm:ss.SSS"の形式でUTCではなくローカルタイムゾーンに変換していました。 。

これを修正するために、harakiriの日付フォーマッターをRestKitのデフォルトの日付フォーマッターに追加しました。

RestKitのセットアップ中に適用されるコードは次のとおりです。うまくいけば、これは将来の誰かを助けるでしょう:

//Add .SSS dateformatter to default formatters:
NSDateFormatter* restKitDates = [NSDateFormatter new];
[restKitDates setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
[restKitDates setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[RKObjectMapping addDefaultDateFormatter:restKitDates];
于 2012-10-21T17:22:11.223 に答える
2

これを試して:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
 [dateFormatter  setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
 dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
 NSString *str = @"2012-07-11T13:28:42.967";
 //NSArray *dateFormatters = [[NSArray alloc]initWithObjects:dateFormatter, nil];
 NSDate *date = [dateFormatter dateFromString:str];
于 2012-07-12T09:09:37.277 に答える