NSString转换为NSDate失败

时间:2012-10-20 14:40:45

标签: ios nsdate nsdateformatter

我有以下代码..

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,但没有效果。我在这里缺少什么?

2 个答案:

答案 0 :(得分:3)

您需要使用小写年度指示,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]);

答案 1 :(得分:0)

您使用的格式字符串不正确。见the documentation。基本上,资本YYYY是“一年中的一周”。尝试使用小写yyyy代替,即

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