Mit Swift 3 können Sie je nach Bedarf eines der beiden folgenden Muster auswählen, um Ihr Problem zu lösen.
# 1. Mit compare(_:to:toGranularity:)
Methode
Calendar
hat eine Methode namens compare(_:to:toGranularity:)
. compare(_:to:toGranularity:)
hat die folgende Erklärung:
func compare(_ date1: Date, to date2: Date, toGranularity component: Calendar.Component) -> ComparisonResult
Vergleicht die angegebenen Daten mit der angegebenen Komponente und gibt sie an, orderedSame
wenn sie in der angegebenen Komponente und allen größeren Komponenten identisch sind, andernfalls entweder orderedAscending
oder orderedDescending
.
Der folgende Spielplatzcode zeigt, wie heiß es ist, ihn zu verwenden:
import Foundation
let calendar = Calendar.current
let date1 = Date()
let date2 = calendar.date(byAdding: .day, value: -1, to: date1)!
let date3 = calendar.date(byAdding: .hour, value: 1, to: date1)!
do {
let comparisonResult = calendar.compare(date1, to: date2, toGranularity: .day)
switch comparisonResult {
case ComparisonResult.orderedSame:
print("Same day")
default:
print("Not the same day")
}
}
do {
let comparisonResult = calendar.compare(date1, to: date3, toGranularity: .day)
if case ComparisonResult.orderedSame = comparisonResult {
print("Same day")
} else {
print("Not the same day")
}
}
# 2. Verwenden vondateComponents(_:from:to:)
Calendar
hat eine Methode namens dateComponents(_:from:to:)
. dateComponents(_:from:to:)
hat die folgende Erklärung:
func dateComponents(_ components: Set<Calendar.Component>, from start: Date, to end: Date) -> DateComponents
Gibt die Differenz zwischen zwei Daten zurück.
Der folgende Spielplatzcode zeigt, wie heiß es ist, ihn zu verwenden:
import Foundation
let calendar = Calendar.current
let date1 = Date()
let date2 = calendar.date(byAdding: .day, value: -1, to: date1)!
let date3 = calendar.date(byAdding: .hour, value: 1, to: date1)!
do {
let dateComponents = calendar.dateComponents([.day], from: date1, to: date2)
switch dateComponents.day {
case let value? where value < 0:
print("date2 is before date1")
case let value? where value > 0:
print("date2 is after date1")
case let value? where value == 0:
print("date2 equals date1")
default:
print("Could not compare dates")
}
}
do {
let dateComponents = calendar.dateComponents([.day], from: date1, to: date3)
switch dateComponents.day {
case let value? where value < 0:
print("date2 is before date1")
case let value? where value > 0:
print("date2 is after date1")
case let value? where value == 0:
print("date2 equals date1")
default:
print("Could not compare dates")
}
}