(这适用于 OSX,尚未在 iOS 上测试过)
在您问“为什么采用这种愚蠢的日期格式”之前:我使用从 iPhone/iPad 上创建的文件中提取的元数据。照片和视频包含一个“creationDate”元数据标签,它以这种格式返回一个 NSString。现在,如果我输入这个字符串:
@“2014-11-21T08:05:16+0400”
通过以下方式进入 NSDateDetector :
__block NSDate *detectedDate;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeDate error:nil];
[detector enumerateMatchesInString:self
options:kNilOptions
range:NSMakeRange(0, [self length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
{ detectedDate = result.date; }];
NSLog(detectedDate.description);
我收到一个完全虚假的价值:
“2014-12-12 14:16:00 CET”
- 日期“2014-12-12”是今天的日期,而不是应该的 2014-11-21
- “欧洲中部时间 14:16:00”的时间已经完成,甚至代码运行的时间都没有
所以我们在这里至少有两种可能性 - 基本上 NSDateDetector 无法处理 Apple 在 iPhone 上编码日期的标准格式,或者我在我的代码中犯了一个我找不到的明显错误。如果第二个是真的,我会很高兴,所以你能告诉我我做错了什么吗?
哦,我在 Mavericks / XCode 5 上运行它。有人吗?请?-ch