NSSate为NSDate为mm / dd / yyyy hh:mm:ss格式

时间:2011-08-05 17:43:19

标签: ios date nsstring nsdate nsdateformatter

我得到的日期字符串是此格式的8/5/2011 1:38:13 PM。如何将其转换为NSDate

我试过了:

[dateFormatter setDateFormat:@"mm/dd/yyyy 'T' hh:mm:ss a"];
NSString *currentDate = [dateFormatter stringFromDate:currentDateString];

返回nil。有什么想法吗?

1 个答案:

答案 0 :(得分:9)

它返回nil的原因是你调用了错误的方法,日期字符串中没有T(单引号'里面的字符是文字​​),而PM不是“下午”。没有破坏它但不完全正确的事情是你试图将月份解析为一分钟而你的日期字符串可以至少有1个月,日和小时,所以你不应该使用2个说明符来填充它们如果你要从日期创建一个字符串。试试这个:

NSString *currentDateString = @"8/5/2011 1:38:13 PM";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//Set the AM and PM symbols
[dateFormatter setAMSymbol:@"AM"];
[dateFormatter setPMSymbol:@"PM"];
//Specify only 1 M for month, 1 d for day and 1 h for hour
[dateFormatter setDateFormat:@"M/d/yyyy h:mm:ss a"]; 
NSDate *currentDate = [dateFormatter dateFromString:currentDateString];

NSLog(@"current date: %@", currentDate);
//Example of the format using the actual date
NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);
[dateFormatter release];