NSString转换为NSDate失败

我有以下代码

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"MM/dd/YYYY HH:mm"]; NSString *dateString = @"10/27/2012 18:00"; NSDate *parsedDate = [dateFormatter dateFromString:dateString] ; NSLog(@"Parsed Date.. %@",[parsedDate description]); 

我得到NSLog语句为Parsed Date.. 2011-12-25 00:00:00 +0000 。 我将不胜感激任何帮助解决这个问题。 我只是想将该NSString转换为其NSDate等价物。 尝试使用NSTimeZone以及,但没有效果。 我在这里错过了什么?

您需要使用小写年份指示, yyyy而不是YYYY

 [dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"]; 

如果你想获得时区,你需要设置NSDateFormatter的时区。 默认情况下,它使用设备的时区。 在格林尼治标准时间使用以下内容。

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; [dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"]; NSString *dateString = @"10/27/2012 18:00"; NSDate *parsedDate = [dateFormatter dateFromString:dateString] ; NSLog(@"Parsed Date.. %@",[parsedDate description]); 

您正在使用不正确的格式string。 请参阅文档 。 基本上,大写YYYY是“年份周”。 尝试使用小写的yyyy而不是

 [dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"];