0

私の質問はもっと似ていると思います:dateString1とdateString2の違いは何ですか?

NSString *dateString = [NSString stringWithFormat:@"2012-07-09 04:10:00 +0000"];
NSString *dateString2 = [NSString stringWithFormat:[[list objectAtIndex:0] nsDate]];
NSArray *chunks = [dateString2 componentsSeparatedByString:@">"];
NSString *correct = [chunks objectAtIndex:0];

NSLog(@"StingOne:%@", dateString);
NSLog(@"InvalidTwo:%@", dateString2);
NSLog(@"StingTwo:%@", correct);

NSDate *datefromString = [[NSDate alloc] init];
NSDate *datefromString2 = [[NSDate alloc] init];

NSDateFormatter *formater = [[NSDateFormatter alloc] init];
[formater setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];
NSDateFormatter *formater2 = [[NSDateFormatter alloc] init];
[formater2 setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];


datefromString = [formater dateFromString:dateString];
datefromString2 = [formater2 dateFromString:correct];

NSLog(@"1st DATE:%@", datefromString);
NSLog(@"2nd DATE:%@", datefromString2);

このコードでわかるように、2つの文字列をNSDateに変換しています。これは、ログコンソールに表示されるものです。

2012-04-24 17:22:09.586 NSString2NSDate[20233:f803] StingOne:2012-07-09 04:10:00 +0000
2012-04-24 17:22:09.589 NSString2NSDate[20233:f803] InvalidTwo:2012-07-19 23:00:00 +0000>
2012-04-24 17:22:09.590 NSString2NSDate[20233:f803] StingTwo:2012-07-19 23:00:00 +0000
2012-04-24 17:22:09.594 NSString2NSDate[20233:f803] 1st DATE:2012-07-09 04:10:00 +0000
2012-04-24 17:22:09.595 NSString2NSDate[20233:f803] 2nd DATE:(null) 

両方の文字列が正しいNSLogを文字列として出力しているため、ここで何が問題になっているのかわかりません。xmlから解析されたdateString2の最後に">"があり、これはプロセスのどこかに確実に追加されているので、削除しましたが、NSDateは(null)です。

この文字列エンコーディングの問題はありますか?これを修正するにはどうすればよいですか?

XMLファイルのエンコーディングはutf-8です。

ありがとうございました。

4

1 に答える 1

1

hh1-12範囲内の時間をHH示し、範囲内の時間を示します0-23。したがって、を解析できるようにするHH代わりにを使用する必要があります。hh23:00:00

NSDateFormatter *formater = [[NSDateFormatter alloc] init];
[formater setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];

NSDate *datefromString = [formater dateFromString:dateString];
NSDate *datefromString2 = [formater dateFromString:correct];

また、使用したのは1つだけであることに注意してくださいNSDateFormatter。2つを使用することはエラーではありませんが、2つ目は必要ありません。

于 2012-04-24T15:42:40.717 に答える