2012-02-14 77 views
2

您能否帮助我进行这种转换 我有NSString date @“2012年8月7日7:21:09 PM” 而且我需要在输出中有这样的字符串: “在下午7时21分,2月8日” 我试图使用dateFormatter不同日期的模式,但它总是返回我null..I真的不understandd哪里我做错了:(将NSString日期转换为NSDate或特定的字符串

NSString *dateString = newsItem.Date;//Which is equal to @"2/8/2012 7:21:09 PM" 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"mm/dd/yyyy hh:mm:ss"];//I'm sure that this patternt is wrong but have no idea how to write the right one 
NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:dateString]; 
[dateFormatter release]; 
NSLog(@"date:%@", dateFromString); 
+1

'NSDateFormatter'是此作业的正确工具。如果它总是返回null,那意味着你给它的格式字符串与实际的日期格式不匹配。你必须具体展示你想要告诉你什么是错的... – 2012-02-14 17:27:31

+0

发布你使用dateFormatter尝试过的代码。 – bschultz 2012-02-14 17:27:32

回答

2

您需要使用两种不同的日期格式化程序:第一种将字符串转换为日期,第二种将日期作为具有指定格式的字符串输出

NSString* dateString = @"2/8/2012 7:21:09 PM"; 
NSDateFormatter* firstDateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[firstDateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"]; 
NSDate* date = [firstDateFormatter dateFromString:dateString]; 

NSLog(@"Date = %@",date); 

NSDateFormatter* secondDateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[secondDateFormatter setDateFormat:@"h:mm a, MMMM d"]; 
NSString* secondDateString = [NSString stringWithFormat:@"at %@",[secondDateFormatter stringFromDate:date]]; 

NSLog(@"%@",secondDateString); 

诀窍是日期格式字符串。他们使用一种叫做unicode日期格式的格式,规范可以在here找到。

+0

+1好点。 “显而易见”你需要2个不同的格式化器,除非你以前从未这样做过,在这种情况下它根本不明显...... – 2012-02-14 17:31:32

+0

嗯我仍然不明白为什么两个格式化器,这是第一个。第二:我有日期(非常感谢!!!)2012-02-08 17:21:09 +0000那么为什么17:21如果时间是晚上7点这意味着19:21不是吗? – Stas 2012-02-14 17:40:07

+0

非常感谢!有用!你们真棒^^但是,为什么它是17:21而不是19:21我还是不明白..不管怎么样,现在只是好奇而已 – Stas 2012-02-14 17:48:28