NSDateFormatter不工作

NSDateFormatter不工作,nsdateformatter,Nsdateformatter,好吧,我觉得问这个问题有点傻,但你知道为什么这不起作用吗: { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"mmmm dd, yyyy"]; NSDate *myDateFromString = [formatter dateFromString:creditDate.text]; NSLog(@

好吧,我觉得问这个问题有点傻,但你知道为什么这不起作用吗:

 {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"mmmm dd, yyyy"];

        NSDate *myDateFromString = [formatter dateFromString:creditDate.text];
         NSLog(@"%@", myDateFromString);
        [self.credit setCertificationDate: myDateFromString];
    }

它返回null格式,字符串不匹配,因为“m”是分钟,“m”是月。所以“2012年8月18日”不能被解释,取而代之的是“MMMM dd yyyy”,您可以在

我总是显式设置区域设置:

  NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
  [dateFormatter setLocale:usLocale];
  [usLocale release];
只要您不解析月份名称,如果提供显式格式字符串,那么您的真实区域设置是否为en_US并不重要

还有一些提示:

  • 使用硬编码字符串进行测试,以排除提供的日期错误
  • 尝试更简单的格式化程序字符串,例如不使用时间或月份作为数字,以隔离错误部分
  • 如果仍然不起作用,则可以使用NSDateFormatter的getObjectValue:forString:range:error:获取有关错误的详细信息

更奇怪的是:当我硬编码这样的文本日期时:NSDate*myDateFromString=[formatter dateFromString:@“9/1/2013”];NSLog(@“%@”,myDateFromString);我还是觉得我在正确的轨道上!我改变了格式,我终于看到了。。。我将其设置为[formatter setDateFormat:@“MM/DD/YYYY”];它读作2012-12-23 07:00:00+0000I应该看到它,几个月前就有同样的错误。我更新了我的答案并删除了我自己的评论,以提供一个连续的答案