将未知格式(任何格式)的字符串转换为日期
我有包含日期字符串的数据。
通常情况下,它会出现在“ Jan”中。1966年第3版的字型格式,但由于国际上的差异,不一定总是那样。
我需要读取数据并将其转换为标准日期字符串(’YYYY-MM-DD’)。
基本上这就是我到目前为止所拥有的:
var dataString = 'Jan. 3, 1966' var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = # I DON'T KNOW THE EXACT INPUT FORMAT !
let dateValue = dateFormatter.dateFromString(dataString)
回答:
或
您可以按以下方式使用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
}
以上是 将未知格式(任何格式)的字符串转换为日期 的全部内容, 来源链接: utcz.com/qa/424704.html