解析日期适用于模拟器而非iphone?

时间:2010-09-20 18:34:06

标签: iphone cocoa-touch ios-simulator nsdateformatter

我有以下代码来解析字符串中的日期:

NSString * str = @"8/13/2010 1:59:00 PM";
NSDateFormatter * dateFormat2 = [[NSDateFormatter alloc] init];
[dateFormat2 setDateFormat:@"MM/dd/yyyy h:mm:ss a"];
NSDate * orderDate = [dateFormat2 dateFromString:str ];

但是orderDate总是空出来,我做错了什么?什么是正确的dateFormatString?

这在模拟器中工作正常,但在iphone 4 ios 4.0

上为空

2 个答案:

答案 0 :(得分:1)

使用@Liam评论中的这个修复帮我解决了这个问题,我只是张贴以防万一对其他人有帮助,

NSDateFormatter * parser = [[NSDateFormatter alloc] init];
NSLocale * locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]autorelease];
[parser setLocale:locale ];
[parser setFormatterBehavior:NSDateFormatterBehavior10_4];
[parser setDateFormat:@"M/d/yyyy h:mm:ss a"];

NSDate * orderDate = [parser dateFromString:str ];

我意识到这个错误我发现只有当iphone用户将他们的时钟设置为24小时军事时间时才会发生,

答案 1 :(得分:0)

问题不在于日期格式,而是仅在Mac OS X v10.4到Mac OS X v10.5上支持init方法(这可能是它在模拟器中工作的原因)。尝试使用

initWithDateFormat:allowNaturalLanguage:

代替。有关详细信息,请参阅here