Jas*_*son 5 iphone formatting cocoa datetime objective-c
您从twitter回来的日期是这种格式Fri Aug 07 12:40:04 +0000 2009.我可以毫无问题地将值分配给NSDate.但是,当我尝试使用NSDateFormatter时,我得到一个零回复给我.我错过了什么?
NSDate *createdAt = [messageData objectForKey:@"created_at"];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"M/d/yy HH:mm"];
NSString *dateString = [format stringFromDate:createdAt];
label.text = dateString;
Run Code Online (Sandbox Code Playgroud)
jam*_*mes 11
我有同样的问题,我无法用当前的上述答案解决它.所以这对我有用:
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
//Wed Dec 01 17:08:03 +0000 2010
[df setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZZ"];
NSDate *date = [df dateFromString:[[tweets objectAtIndex: storyIndex] objectForKey: TWITTER_CREATED_AT_JSON_KEY]];
[df setDateFormat:@"eee MMM dd yyyy"];
NSString *dateStr = [df stringFromDate:date];
Run Code Online (Sandbox Code Playgroud)
其中tweets是一个NSMutableArray填充NSDictionary对象,storyIndex是行int值(在tableview中),并且TWITTER_CREATED_AT_JSON_KEY是一个NSString带值的常量created_at.使用dateStr您想要的任何地方显示日期
如果与 @"created_at" 键关联的对象是有效的 NSDate 对象,则此代码应该可以工作。
然而,我猜测它实际上是一个 NSString。如果是这样,它将产生您所描述的行为。
如果我是对的,上面的代码片段将 NSString 对象分配给 NSDate 引用。NSDictionary 返回无类型的“id”对象,因此编译器不会向您发出类型不匹配警告。
您必须使用 NSDateFormatter 将字符串解析为 NSDate (请参阅 dateFromString:)。