Simplified US date format check and Date/Time date null check
This commit is contained in:
parent
6293e5f26f
commit
0b13457b82
|
@ -56,6 +56,7 @@ extension String {
|
||||||
var day: Int?
|
var day: Int?
|
||||||
var month: Int?
|
var month: Int?
|
||||||
var year: Int?
|
var year: Int?
|
||||||
|
|
||||||
// check for german dates ((d)d.(m)m.(yy)yy) or ((m)m.(yy)yy) or ((d)d.(m)m)
|
// 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
|
if (contains(".")) { // most obvious sign for a german date
|
||||||
let parts = split(separator: ".").map { Int($0) ?? 0}
|
let parts = split(separator: ".").map { Int($0) ?? 0}
|
||||||
|
@ -76,8 +77,8 @@ extension String {
|
||||||
}
|
}
|
||||||
} else if (contains("-") || contains("/")) {
|
} else if (contains("-") || contains("/")) {
|
||||||
let sep: Character = self.contains("/") ? "/" : "-"
|
let sep: Character = self.contains("/") ? "/" : "-"
|
||||||
let usWay = contains("/")
|
let usWay = sep == "/"
|
||||||
let parts = split(separator: sep).map { Int($0) ?? 0}
|
let parts = split(separator: sep).map { Int($0) ?? 0 }
|
||||||
let isoOrder = parts[0] > 12 && parts[1] < 13
|
let isoOrder = parts[0] > 12 && parts[1] < 13
|
||||||
if (parts.count == 3) {
|
if (parts.count == 3) {
|
||||||
let reverseIsoOrder = !usWay && parts[2] > 12 && parts[1] < 13
|
let reverseIsoOrder = !usWay && parts[2] > 12 && parts[1] < 13
|
||||||
|
@ -134,11 +135,11 @@ extension String {
|
||||||
if (year == nil) {
|
if (year == nil) {
|
||||||
year = calendar.component(.year, from: date)
|
year = calendar.component(.year, from: date)
|
||||||
}
|
}
|
||||||
if (year! < 100 && year! < 50) {
|
if (year! < 50) {
|
||||||
year = 2000 + year!
|
year = 2000 + year!
|
||||||
}
|
}
|
||||||
let components = DateComponents(calendar: calendar, year: year, month: month, day: day)
|
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? {
|
public func swiftyDateTime(calendar: Calendar = Calendar.current, baseDate: Date = Date()) -> Date? {
|
||||||
if (self == "") { return nil }
|
if (self == "") { return nil }
|
||||||
|
@ -154,8 +155,7 @@ extension String {
|
||||||
let parts:[String] = split(separator: "T").map(String.init)
|
let parts:[String] = split(separator: "T").map(String.init)
|
||||||
date = parts[0].swiftyDate()
|
date = parts[0].swiftyDate()
|
||||||
time = parts[1].swiftyTime()
|
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: " ") {
|
if let pos = index(of: " ") {
|
||||||
date = String(self[..<pos]).swiftyDate()
|
date = String(self[..<pos]).swiftyDate()
|
||||||
time = String(self[pos...]).swiftyTime()
|
time = String(self[pos...]).swiftyTime()
|
||||||
|
@ -168,9 +168,7 @@ extension String {
|
||||||
} else {
|
} else {
|
||||||
date = swiftyDate()
|
date = swiftyDate()
|
||||||
}
|
}
|
||||||
if (date == nil) {
|
|
||||||
return nil
|
return date == nil ? nil : date! + time
|
||||||
}
|
|
||||||
return date! + time
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue