Simplified US date format check and Date/Time date null check

This commit is contained in:
Caleb Kleveter 2018-06-12 16:38:18 -05:00
parent 6293e5f26f
commit 0b13457b82
No known key found for this signature in database
GPG Key ID: B38DBD5CF2C98D69
1 changed files with 8 additions and 10 deletions

View File

@ -56,6 +56,7 @@ extension String {
var day: Int?
var month: Int?
var year: Int?
// check for german dates ((d)d.(m)m.(yy)yy) or ((m)m.(yy)yy) or ((d)d.(m)m)
if (contains(".")) { // most obvious sign for a german date
let parts = split(separator: ".").map { Int($0) ?? 0}
@ -76,7 +77,7 @@ extension String {
}
} else if (contains("-") || contains("/")) {
let sep: Character = self.contains("/") ? "/" : "-"
let usWay = contains("/")
let usWay = sep == "/"
let parts = split(separator: sep).map { Int($0) ?? 0 }
let isoOrder = parts[0] > 12 && parts[1] < 13
if (parts.count == 3) {
@ -134,11 +135,11 @@ extension String {
if (year == nil) {
year = calendar.component(.year, from: date)
}
if (year! < 100 && year! < 50) {
if (year! < 50) {
year = 2000 + year!
}
let components = DateComponents(calendar: calendar, year: year, month: month, day: day)
return components.date!
return components.date
}
public func swiftyDateTime(calendar: Calendar = Calendar.current, baseDate: Date = Date()) -> Date? {
if (self == "") { return nil }
@ -154,8 +155,7 @@ extension String {
let parts:[String] = split(separator: "T").map(String.init)
date = parts[0].swiftyDate()
time = parts[1].swiftyTime()
}
else if (cleanString.contains(" ") && (cleanString.contains(":") || cleanString.contains("am") || cleanString.contains("pm")) && (cleanString.contains("/") || cleanString.contains("-") || cleanString.contains("."))) {
} else if (cleanString.contains(" ") && (cleanString.contains(":") || cleanString.contains("am") || cleanString.contains("pm")) && (cleanString.contains("/") || cleanString.contains("-") || cleanString.contains("."))) {
if let pos = index(of: " ") {
date = String(self[..<pos]).swiftyDate()
time = String(self[pos...]).swiftyTime()
@ -168,9 +168,7 @@ extension String {
} else {
date = swiftyDate()
}
if (date == nil) {
return nil
}
return date! + time
return date == nil ? nil : date! + time
}
}