2012-04-24 85 views
0

我想我的問題會更像︰dateString1和dateString2之間的區別是什麼?解析XML NSString到NSDate輸出(null)

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); 

正如你可以在這段代碼中看到的,我將兩個字符串轉換爲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。

謝謝。

回答

1

hh指示小時的範圍內1-12HH指示小時的範圍內0-23。所以你應該使用HH而不是hh來解析23: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]; 

另外請注意,我只一個NSDateFormatter使用。使用兩個不是錯誤,但第二個不是必需的。

+0

謝謝。工作正常。第二個格式化程序就是100%確定的。 – defou 2012-04-24 15:56:49