0

2012-08-01T11:53:58+02:00のようなJSON エンコーディングで日付文字列を受信して​​います。NSDateオブジェクトに変換したいのですが、変換がうまくいきません。私が知る限り、それは ISO 8601 形式であるはずですが、間にコロンがあるため、最後のタイム ゾーンについてかなり混乱しています。

これまでの私のコードは次のようになります。

 /*
  * format the time
  */
 NSDateFormatter *isoDateFormatter = [NSDateFormatter new];
 [isoDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
 NSDate *dateTmp = [isoDateFormatter dateFromString:[data objectForKey:@"datetimeServer"]];
 /*
  * log the output
  */
 [isoDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
 NSLog(@"Server time is %@", [isoDateFormatter stringFromDate:dateTmp]);

使用できない回答を防ぐために、日付は間違いなくそこにあり、ログで確認しました:)。ただし、サーバー時間が (null) に等しいため、変換が正しく機能しませんでした。

回答ありがとうございます。

さようなら、フィリップ

4

1 に答える 1

-1

JSONエンコーディングで受け取っている日付文字列に基づいて(あなたが述べたように)、次のようになります:2012-08-01T11:53:58 + 02:00日付文字列が適切な形式ではないのではないかと心配しています文字列操作を少し行うことをお勧めします。

//NSMutableString *string=[[NSMutableString alloc]initWithString:@"2012-08-01T11:53:58+02:00"];

NSMutableString *string=[[NSMutableString alloc]initWithString:[data objectForKey:@"datetimeServer"]]; 
NSRange range = [string rangeOfString:@"+" options:NSBackwardsSearch]; 
[string insertString:@"GMT" atIndex:range.location];

NSDateFormatter *isoDateFormatter = [[NSDateFormatter alloc]init];
[isoDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
NSDate *dateTmp = [isoDateFormatter dateFromString:string];
NSLog(@"Server time is %@", dateTmp);

[isoDateFormatter setDateFormat:@"yyyy-MM-dd 'T' HH:mm:ss"];    
NSLog(@"Server time is %@", [isoDateFormatter stringFromDate:dateTmp]);

これがお役に立てば幸いです

于 2012-08-01T11:27:14.277 に答える