当日期字符串包含日期名称时,NSDataDetector返回两个不正确的匹配项

时间:2014-02-05 11:23:57

标签: ios cocoa date

我正在编写一个iOS 7应用程序,该应用程序使用以下代码从字符串中解析日期:

NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:nil];
NSArray *matches = [detector matchesInString:lastUpdated options:0 range:NSMakeRange(0, [lastUpdated length])];
NSLocale* currentLoc = [NSLocale currentLocale];
for (NSTextCheckingResult *match in matches) {
  if ([match resultType] == NSTextCheckingTypeDate) {
     NSLog(@"Date : %@", [[match date] descriptionWithLocale:currentLoc]);
  }
}

输入字符串(lastUpdated)如下所示:

  

星期一,2014年2月3日16:59:15 GMT

我从数据检测器得到两个匹配,两个都不正确:

  

2014年2月3日星期一12:00:00格林威治标准时间

  

2014年2月5日星期三16:59:15格林威治标准时间

(2月5日是此示例运行代码的日期。)如果我从原始字符串手动剥离“Mon”,我会得到一个匹配,这是正确的结果:

  

2014年2月3日星期一16:59:15格林威治标准时间

但显然最好不要操纵输入字符串,因为这样做会违背使用NSDataDetector的目的。如果有人能解释我哪里出错了,我会非常感激。我运行此代码的设备是iOS 7,IDE是Xcode 5.02。该地区是英国,伦敦时区。

更新2014-02-06。我发现只有字符串开头“mon”才有这个问题。如果字符串的开头是一周中的任何其他日期,则只返回一个匹配项,并且该匹配项具有正确的日期。如果字符串以“mon”开头,则返回两个匹配,这两个匹配都不是完整的日期和时间。所以大概“mon”对NSDataDetector来说意味着“星期一”以外的东西?

0 个答案:

没有答案