将NSString转换为NSdate

时间:2016-12-08 15:59:22

标签: ios objective-c nsstring nsdate

我想将NSString转换为NSDate。

问题是我正在从图像中读取提供NSString值的exif信息。 现在我想将此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中,我们必须传递给定的格式类型。我们是否可以使用一种方法来确定运行时字符串中的日期格式,因为字符串可能具有一些不同的格式,具体取决于本地化或相机类型。

3 个答案:

答案 0 :(得分:2)

我认为最好的情况是如果你可以创建一个只是用Dates操作的类,所以我更愿意使用NSDateForamatter创建一个类似的方法:

+ (NSDate *)getDateFromStringDate:(NSString *)stringDate {
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"];
    return [dateFormat dateFromString:stringDate]; 
}

您可以在此设置日期格式。 希望这会有所帮助。

答案 1 :(得分:1)

正如@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];

答案 2 :(得分:0)

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];