1

iPhoneアプリで働いています。Webサービスの応答から日付を取得しています。NSArrayに保存している日付を受け取ったとき。そして、NSStringをNSDateに変更すると、日付はnullを返します。これが私のコードです、

  for (int k = 0; k<[dateArray count]; k++)  
 {
    NSString *dateStr = [dateArray objectAtIndex:k];
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    [dateFormatter1 setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 
    [dateFormatter1 setFormatterBehavior:NSDateFormatterBehaviorDefault];
    [dateFormatter1 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    NSLog(@"DateStr : %@", dateStr); //Console Output is : 2012-07-09 13:50:07 [For 42nd and above values]
    NSDate *date = [dateFormatter1 dateFromString:dateStr];
    NSLog(@"Date : %@", date); // Console Output is : (null) [For 42nd and above values]
 }

dateArrayには、Webサービスからの43の日付値が含まれています。NSDateFormatter returns correct NSDate from NSString til 41nd values。_ 日付が再びnullを返すとき42nd string passing to the NSDateFormatter the output returns "(null)".に試したところ、dateFromStringを再度変換して"(null)"エラーが発生しました。誰かが私がこれを解決するのを手伝ってくれますか?前もって感謝します。

4

3 に答える 3

10

「hh」の代わりに大文字の「HH」を使用してみてください。hhは1〜12時間、HHは0〜23時間です。おそらく、13:00がそれをスローしていますか?

于 2012-07-10T15:26:49.530 に答える
2

NSDateFormatterどこでも同じものを使用して、forinループを繰り返してみてください。現在使用している方法で大量のメモリがリークしています。これで問題が解決することを保証することはできませんが、少なくともコードはクリーンアップされます。

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 

for (NSString *dateString in dateArray) {
    NSLog (@"Date %@ and index %i: NSDate representation is %@", dateString, [dateArray indexOfObject:dateString], [dateFormatter dateFromString:dateString]);
}

これで問題が解決しない場合は、次の点に注意してください。

  1. timeZone日付フォーマッタにを設定しないでください。文字列にはタイムゾーンが含まれていないため、何も実行されません。
  2. どちらも設定しないでくださいformatterBehavior。自動的にNSDateFormatterBehaviorDefaultです。
  3. 最初の41の日付と残りの日付について本質的に違いがないことを確認してください。
于 2012-07-10T15:29:22.413 に答える
0

「yyyy-MM-ddHH:mm:ss」の代わりに「yyyy-MM-ddhh:mm:ss」形式を使用します

hhは1〜12時間、HHは0〜23時間です。0〜23の形式で時間を取得します。

[dateFormatter1 setDateFormat:@ "yyyy-MM-dd HH:mm:ss"];

于 2013-09-04T11:38:10.943 に答える