Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift:NSDataDetector用于字符串中的多个日期_Swift_String_Date_Swift3_Nsdatadetector - Fatal编程技术网

Swift:NSDataDetector用于字符串中的多个日期

Swift:NSDataDetector用于字符串中的多个日期,swift,string,date,swift3,nsdatadetector,Swift,String,Date,Swift3,Nsdatadetector,在使用NSDataDetector分析日期字符串时,我遇到了一个有点出乎意料的结果: 我承认,lazy me发现用这种方式解析比在字符串中选择日期更容易:它适用于大多数语言,您不需要知道实际的格式。 它真的很有效,它确实会选择它找到的第一个日期(如果字符串描述了一个句点,那么您就可以找到另一个匹配的持续时间!) …除非字符串描述的时间段超过12月31日,并且超过大约2个月,例如“从12月1日到3月1日”,否则它将选择结束日期 当“从12月1日到2月1日”返回第一个日期时!有线索吗 (下面的代码不

在使用NSDataDetector分析日期字符串时,我遇到了一个有点出乎意料的结果: 我承认,lazy me发现用这种方式解析比在字符串中选择日期更容易:它适用于大多数语言,您不需要知道实际的格式。 它真的很有效,它确实会选择它找到的第一个日期(如果字符串描述了一个句点,那么您就可以找到另一个匹配的持续时间!)

…除非字符串描述的时间段超过12月31日,并且超过大约2个月,例如“从12月1日到3月1日”,否则它将选择结束日期
当“从12月1日到2月1日”返回第一个日期时!有线索吗

(下面的代码不是在处理错误,是的,是故意挑选第一个匹配项,通常是第一个找到的日期)

func returnDateFromString( text: String) -> Date {
    let types: NSTextCheckingResult.CheckingType = [.date ]
    let detector = try? NSDataDetector(types: types.rawValue)
    var aDate = Date() // default to today if none, no error check I know 
    let result = detector?.firstMatch(in: text, range: NSMakeRange(0, text.utf16.count))
    if result?.resultType == .date {
        aDate = (result?.date)!
  }
return aDate
}

returnDateFromString(text: "from December 1 to February 1") // returns "Dec 1, 2017, 12:00 PM"
returnDateFromString(text: "from December 1 to March 1") // returns "Mar 1, 2017, 12:00 PM"