Ios 将NSString转换为NSdate

Ios 将NSString转换为NSdate,ios,objective-c,nsstring,nsdate,Ios,Objective C,Nsstring,Nsdate,我想将NSString转换为NSDate 问题是我正在从图像中读取exif信息,该图像给出了一个NSString值。 现在我想把这个NSString转换成NSDate 我在下面试过 NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:&error]; NSArray *matches = [detector matchesInSt

我想将NSString转换为NSDate

问题是我正在从图像中读取exif信息,该图像给出了一个NSString值。 现在我想把这个NSString转换成NSDate

我在下面试过

      NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:&error];
      NSArray *matches = [detector matchesInString:datestring
                                     options:0
                                       range:NSMakeRange(0, [datestring length])];


    for (NSTextCheckingResult *match in matches) {
       if ([match resultType] == NSTextCheckingTypeDate) {
           dateObj =  [match date];
           break;
    }
}
================

我在exif中看到的格式是2010:05:27 17:48:42+04:00

注意:-是否有任何方法可以采用任何NSString格式并提供NSDate对象

编辑
在NSDateformatter中,我们必须传递给定的格式类型。我们可以有一种方法在运行时从字符串中确定日期格式吗?因为根据本地化或相机类型,字符串可能有一些不同的格式。

正如@Cyrille所说,您必须使用
NSDateFormatter

NSString *myString = @"2010:05:27 17:48:42+0400";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy:MM:dd HH:mm:ssZZZ"];

NSDate *myDate = [dateFormatter dateFromString:myString];

我认为最好的方法是创建一个只用于处理日期的类,因此我更喜欢使用NSDATEFORAMENT创建这样的方法:

+ (NSDate *)getDateFromStringDate:(NSString *)stringDate {
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"];
    return [dateFormat dateFromString:stringDate]; 
}
在那里,您可以设置您拥有的日期格式。
希望这会有所帮助。

NSDateFormatter
:是将
NSString
转换为
NSDate
的最佳方法

NSString *yourString = @"2016:10:13 17:48:42+0400";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy:MM:dd HH:mm:ssZZZ"];

NSDate *yourDate = [dateFormatter dateFromString:yourString];

为此,您需要一个
NSDateFormatter
,而不是
NSDataDetector
。关于iOS的堆栈溢出问题,大约有一半是关于解析日期的问题,您应该很容易找到。