更改日期字符串格式

时间:2016-03-10 18:45:24

标签: objective-c cocoa cocoa-touch nsstring nsdateformatter

我有一个像这样的日期字符串:

22-04-2016 8:00:00 AM

如何将格式更改为04-22-2016 8:00:00 AM

我尝试了以下内容:

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

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

但这会返回nil。如何更改此字符串的格式? [cell scheduledDate]是一个字符串。

2 个答案:

答案 0 :(得分:3)

如果您拥有的是一个应该代表日期的字符串,而您想要做的是以不同的方式表示该日期,那么您实际上需要两个日期格式器,一个用于将字符串转换为日期,另一个将该日期转换为新的字符串。 (你真的不需要两个格式化程序;你真正需要的是两种格式。但如果你使用两种格式化程序它会更简单。)

请注意,将字符串转换为日期的格式化程序必须匹配您开始使用的字符串的格式。你的没有。

答案 1 :(得分:1)

您可以这样说:

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

要获得NSDate。然后,亚光建议使用另一个NSDateFormatter将其转换为不同的字符串。我同意他的反对意见,但也许不可能将这些信息作为约会对象。