Objective c 更改日期字符串格式

Objective c 更改日期字符串格式,objective-c,cocoa,cocoa-touch,nsstring,nsdateformatter,Objective C,Cocoa,Cocoa Touch,Nsstring,Nsdateformatter,我有一个日期字符串,如下所示: 22-04-2016 8:00:00 AM 如何将格式更改为2016年4月22日上午8:00:00 我尝试了以下方法: NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"MM-dd-yyyy"]; NSLog(@"%@", [dateFormat dateFromString:[cell scheduledDate]]); 但这个

我有一个日期字符串,如下所示:

22-04-2016 8:00:00 AM
如何将格式更改为2016年4月22日上午8:00:00

我尝试了以下方法:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM-dd-yyyy"];

NSLog(@"%@", [dateFormat dateFromString:[cell scheduledDate]]);

但这个结果为零。如何更改此字符串的格式?[cell scheduledDate]是一个字符串。

您可以这样说:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//Set the AM and PM symbols
[dateFormatter setAMSymbol:@"AM"];
[dateFormatter setPMSymbol:@"PM"];
[dateFormatter setDateFormat:@"dd-MM-yyyy h:mm:ss a"]; 
NSDate *currentDate = [dateFormatter dateFromString:[cell scheduledDate]];

去约会。然后,正如matt建议的那样,使用另一个NSDateFormatter将其转换为不同的字符串。我同意他的反对意见,但可能无法将信息保留为日期。

如果您拥有的是一个应该表示日期的字符串,并且您希望以不同的方式表示该日期,那么实际上您需要两个日期格式化程序,一个将字符串转换为日期,另一种方法是将该日期转换为新字符串。您实际上不需要两个格式化程序;你真正需要的是两种格式。但如果使用两个格式化程序,则更简单


请注意,将字符串转换为日期的格式设置程序必须与起始字符串的格式匹配。你的没有。

日期没有格式。字符串有一种格式。您实际拥有的是什么,日期还是字符串?currentDate返回null:我希望在格式更改后将其更改回NSString。我编辑了我的答案。我使用了斜杠,并将日期和月份进行了转换,应该是@dd-MM-yyy h:MM:ss-aBut。请注意,如果您将此信息保留为日期,效果会更好。字符串到目前为止,字符串是一种不好的气味。