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

正如您在这段代码中看到的,我将两个字符串转换为 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

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. 使用两个不是错误,但第二个不是必需的。

于 2012-04-24T15:42:40.717 回答