1

日付フォーマッターから常にnullを取得しています。私は他のすべての質問で例を試しましたが、役に立ちませんでした。

 NSLog(@"Date is %@", summaryItem.SubmittedDate);
NSLog(@"Formatted Date is %@", [df stringFromDate: summaryItem.SubmittedDate ]);
BOOL isDate = [summaryItem.SubmittedDate isKindOfClass: [NSDate class]];
NSLog(@"Date %@ a date.", isDate ? @"is" : @"is not");

あなたが持っているSubmittedDateの定義を見てください

@property (nonatomic, retain) NSDate *SubmittedDate;

私はそのように日付形式を初期化しています

- (void) initDateFormatter {
  if( df == nil ) {
    df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"MM/dd/yyyy"];
    [df setDateStyle:NSDateFormatterShortStyle];
  }
}
  1. ログへの出力:
    • 2012-11-21 10:00:41.650 Mobile_v2 [4093:f803]日付は11/21/2012 10:00:41 AM
    • 2012-11-21 10:00:41.651 Mobile_v2 [4093:f803]フォーマットされた日付は(null)
    • 2012-11-21 10:00:41.681 Mobile_v2 [4093:f803]日付は日付ではありません。

誰かが何が悪いのかわかりますか?日付形式が間違っていますか?

私のSBJsonクラスのコード

NSString *newDate = (NSString *)[receivedObjects objectForKey:@"SubmittedDate"];
NSDate *submittedDate = [df dateFromString:newDate];  //(NSDate *) 
if ((NSNull *) submittedDate == [NSNull null]) {
    self.SubmittedDate = nil;
} else {
    self.SubmittedDate = submittedDate;
}

実際の値は「11/21/201210:47:54AM」です。

4

2 に答える 2

1

ログから summaryItem.SubmittedDateオブジェクトはクラスNSDateではありません。

まず、そのオブジェクトのクラスをログに記録します。

NSLog(@"%@",  [summaryItem.SubmittedDate class]);

出力がNSDateでない場合は、 @property (nonatomic, retain) NSDate *SubmittedDate;宣言されているクラスの実装(.mファイル)に問題があります。

于 2012-11-21T16:27:13.177 に答える
0

JSON応答を解析するときに、NSDateFormatterを使用して文字列から日付に変換することはお勧めしません。

  1. 適切な日付形式を設定する必要があります[dfsetDateFormat:@ "MM / dd/yyyy"]。
  2. NSDateFormatterは非常に遅いです。

代わりに、UNIXタイムスタンプ(1-1-1970からの秒数)を使用し、

-(id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds

日付オブジェクトを作成します。

于 2012-11-21T17:05:12.697 に答える