NSDateFormatting奇怪的行为

时间:2012-01-13 21:55:40

标签: iphone objective-c date formatting

我想从字符串格式化日期。我可以这样做:

NSString *str = @"Fri, 13 Jan 2012 12:25:49 +0000";
NSLog(@"String: %@", str);
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZZ"];
NSDate *datefrom = [df dateFromString:str];
NSLog(@"NSDate: %@", datefrom);
[df setDateFormat:@"dd/MM/yyyy"];
str = [df stringFromDate:datefrom];
NSLog(@"Formated String: %@", str);

但这没用,因为我希望能够格式化不同的日期。所以当我这样做时:

NSString *str = [[stories objectAtIndex:0] objectForKey:@"date"];
NSLog(@"String: %@", str);
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZZ"];
NSDate *datefrom = [df dateFromString:str];
NSLog(@"NSDate: %@", datefrom);
[df setDateFormat:@"dd/MM/yyyy"];
str = [df stringFromDate:datefrom];
NSLog(@"String Formatada: %@", str);

它根本不起作用。我检查了[[stories objectAtIndex:0] objectForKey:@“date”]的输出,它与@“Fri,2012年1月13日12:25:49 +0000”完全相同的字符串

我比较了两个字符串来检查我是不是读错了。这是我用来比较的代码:

if ([[[stories objectAtIndex:0] objectForKey:@"date"] isEqualToString:@"Fri, 13 Jan 2012 12:25:49 +0000"]) {
    NSLog(@"They are the same");
}
else NSLog(@"They are NOT the same");

但它们似乎并不相同,因为我总是得到“它们与输出不一样”,即使它们在视觉上完全相同。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你确定[[stories objectAtIndex:0] objectForKey:@“date”]返回的对象是NSString而不是NSDate对象吗?记录它时可能看起来一样,所以告诉的唯一方法是通过记录来检查你可以做的类型:

NSLog(@“%@”,NSStringFromClass([str class]));

答案 1 :(得分:0)

如果它们不相同,则问题是字符串而不是dateFormatter。

NSLog()就是这样:

NSString *str = [[stories objectAtIndex:0] objectForKey:@"date"];
NSLog(@"String: %@", str);