Xpre 9•Swift 4 或 Xpre 8.3.2•Swift 3.1
您可以按以下方式使用NSDataDetector:
extension String { var nsString: NSString { return self as NSString } var length: Int { return nsString.length } var nsRange: NSRange { return NSRange(location: 0, length: length) } var detectDates: [Date]? { return try? NSDataDetector(types: NSTextCheckingResult.CheckingType.date.rawValue) .matches(in: self, range: nsRange) .flatMap{$0.date} }}extension Collection where Iterator.Element == String { var dates: [Date] { return flatMap{$0.detectDates}.flatMap{$0} }}测试:
let dateStrings = ["January 3, 1966","Jan 3, 1966", "3 Jan 1966"]for dateString in dateStrings { if let dateDetected = dateString.detectDates?.first { print(dateDetected) // 1966-01-03 14:00:00 +0000 // 1966-01-03 14:00:00 +0000 // 1966-01-03 14:00:00 +0000 }}let dateStrings = ["January 3, 1966","Jan 3, 1966", "3 Jan 1966"]for date in dateStrings.dates { print(date) // 1966-01-03 14:00:00 +0000 // 1966-01-03 14:00:00 +0000 // 1966-01-03 14:00:00 +0000}


