使用MM / d / YYY hh:mm aaa格式将NSDate解析为String无效

时间:2012-03-07 12:58:04

标签: iphone objective-c nsstring nsdate nsdateformatter

我很难解析类型为3\/3\/2012 12:00:00 AM的日期字符串。我有以下代码:

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    formatter.dateFormat = @"MM/d/YYYY hh:mm aaa";
    conference.beginDate = [formatter dateFromString:[jsonElement valueForKey:@"BeginDateMember"]];

但遗憾的是,我的所有beginDate都是null

我不确定是否:a)我需要以格式包含转义反斜杠,b)我指定的语言环境错误,c)我指定格式错误,或者d)上面的某些组合。

这是一种有些非标准的日期格式,因此感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/d/YYYY hh:mm aaa"]; //notice the change here ..
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; //.. and here
conference.beginDate = [formatter dateFromString:[jsonElement valueForKey:@"BeginDateMember"]];

[dateFormatter release];

如果仍然为null,请确保您的jsonElement实际上有值。

答案 1 :(得分:0)

你的格式看起来有点偏差:

formatter.dateFormat = @"MM/d/yyyy hh:mm a";

您可以找到支持的格式here列表。

此外,如果您未使用ARC而不是autorelease NSLocale

formatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];