当dateString为@" 19900415"时,NSDateFormatter dateFromString返回nil。

时间:2018-04-11 01:57:18

标签: objective-c nsdateformatter

NSDateFormatter dateFromStringnil时,

dateString会返回@"19900415"

如果dateString是另一个值,它将返回正确的值。

格式为@"yyyyMMdd"

以下是代码:

- (NSDate *)dateWithString:(NSString *)dateString format:(NSString *)format {
  if (!dateString || !format) {
    return nil;
  }

  NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  [formatter setDateFormat:format];
  return [formatter dateFromString:dateString];
}

1 个答案:

答案 0 :(得分:0)

这段代码工作正常我已经添加了编码值并且工作正常这里的问题是您的输入错误或者可能是由于Locale?使用断点并尝试调试你得到错误值的地方我已经添加了一些额外的检查来防止进一步的错误: -

最终方法如下所示: -

-(NSDate *)dateWithString:(NSString *)dateString format:(NSString *)format {

    BOOL isNil=(!dateString || !format);
    BOOL isEmpty=(!dateString.length || !format.length);
    BOOL isMismatch=(format.length!=dateString.length);

    if (isNil || isEmpty || isMismatch ) {
        NSLog(@"Please check input values");
        return nil;
    }
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:format];
    [formatter setLocale:[NSLocale currentLocale]];
    NSDate *date=[formatter dateFromString:dateString];
    NSLog(@"DATE IS : %@",[formatter stringFromDate:date]);
    return date;

}