CocoaExtension // Add Date.isTodayTheDate(from:), etc.
This commit is contained in:
parent
f899e900c9
commit
6430515215
|
@ -133,3 +133,38 @@ extension NSApplication {
|
||||||
return info.phys_footprint as UInt64
|
return info.phys_footprint as UInt64
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - Check whether current date is the given date.
|
||||||
|
|
||||||
|
extension Date {
|
||||||
|
/// Check whether current date is the given date.
|
||||||
|
/// - Parameter dateDigits: `yyyyMMdd`, 8-digit integer. If only `MMdd`, then the year will be the current year.
|
||||||
|
/// - Returns: The result. Will return false if the given dateDigits is invalid.
|
||||||
|
public static func isTodayTheDate(from dateDigits: Int) -> Bool {
|
||||||
|
let currentYear = Self.currentYear
|
||||||
|
var dateDigits = dateDigits
|
||||||
|
let strDateDigits = dateDigits.description
|
||||||
|
switch strDateDigits.count {
|
||||||
|
case 3, 4: dateDigits = currentYear * 10000 + dateDigits
|
||||||
|
case 8:
|
||||||
|
if let theHighest = strDateDigits.first, "12".contains(theHighest) { break }
|
||||||
|
return false
|
||||||
|
default: return false
|
||||||
|
}
|
||||||
|
let formatter = DateFormatter()
|
||||||
|
formatter.dateFormat = "yyyyMMdd"
|
||||||
|
var calendar = NSCalendar.current
|
||||||
|
calendar.timeZone = TimeZone.current
|
||||||
|
let components = calendar.dateComponents([.day, .month, .year], from: Date())
|
||||||
|
if let a = calendar.date(from: components), let b = formatter.date(from: dateDigits.description), a == b {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
public static var currentYear: Int {
|
||||||
|
let formatter = DateFormatter()
|
||||||
|
formatter.dateFormat = "yyyy"
|
||||||
|
return (Int(formatter.string(from: Date())) ?? 1970)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue