Vergleichen, Zusatz, Subtraktion & Countdown mit NSDate

Dieses Lernprogramm ist für X-Code aktualisiert 7.3 & schnell 2.2

Die arithmetischen Operationen am Tag ist sehr wichtig, in iPhone Apps. Denn wenn eine Benutzereingabe Datum dann in der Anzahl der Möglichkeiten an, die angezeigt. Ich bin nicht nur darüber zu reden Formatierung des Datums. Mit einfachen arithmetischen Operationen erhalten Sie viel mehr Informationen zum Beispiel mit Geburtstag als Eingabe nehmen Sie herausfinden können, was ihr Alter. Wie viele Tage bis zum nächsten Geburtstag & bald.

Vergleichen NSDate

Wir werden lernen, 3 Weisen zwei Daten vergleichen. Zuerst werden wir Termine mit Komponenten erstellen. Zur Veranschaulichung nehme ich zwei Tage, Muttertag 2016 & Vatertag 2016. Ich schaffe Daten wie folgt

let userCalendar = NSCalendar.currentCalendar()

let mothersDayComponent = NSDateComponents()

mothersDayComponent.year = 2016

mothersDayComponent.month = 5

mothersDayComponent.day = 8

let mothersDay = userCalendar.dateFromComponents(mothersDayComponent)!

let fathersDayComponent = NSDateComponents()

fathersDayComponent.year = 2016

fathersDayComponent.month = 6

fathersDayComponent.day = 19

let fathersDay = userCalendar.dateFromComponents(fathersDayComponent)!

Now I am going to start comparing dates as follows

let earlierDate = mothersDay.earlierDate(fathersDay)

print(earlierDate)

let laterDate = mothersDay.laterDate(fathersDay)

print(laterDate)

Wie der Name uns früher schon sagt erzählt, welches Datum zuerst kommt & später erzählt uns, welche Datum letzte kommt. Aber das Ergebnis, das wir hier bekommen, ist tatsächlich NSDate. Ergebnis im Debug-Bereich sieht wie folgt

Datum vergleichen

Eine andere Möglichkeit, zwei Datum zu vergleichen, ist wie folgt

var compareResult = mothersDay.compare(fathersDay)

switch compareResult {

case NSComparisonResult.OrderedAscending:
print(“Mothers day comes before fathers day”)

case NSComparisonResult.OrderedDescending:
print(“Mother’s day comes after fathers day”)

case NSComparisonResult.OrderedSame:
print(“Mother’s day is on same day as father’s day”)

}

Mit dieser Methode erhalten Sie zusätzliche Ergebnis, wenn beide Daten identisch sind. In früheren Verfahren war dies nicht möglich. In früheren Verfahren erhalten Sie NSDate als Ergebnis. Sie haben keine Möglichkeit zu wissen, zu welchem ​​Zeitpunkt gewonnen.

Wenn Sie sich auf den Vergleich von zwei Terminen mehr granulare Kontrolle wollen, dann können Sie es tun, wie folgt

var compareResult = userCalendar.compareDate(mothersDay, toDate: fathersDay, toUnitGranularity: NSCalendarUnit.Year)

switch compareResult {

case NSComparisonResult.OrderedAscending:
print(“Mothers day comes before fathers day”)

case NSComparisonResult.OrderedDescending:
print(“Mother’s day comes after fathers day”)

case NSComparisonResult.OrderedSame:
print(“Mother’s day is on same year as father’s day”)

}

In obigen Verfahren prüfen wir, ob beide Zeitpunkt fallen in demselben Jahr oder nicht. gleiche Methode verwenden, können wir herausfinden, ob beide Daten innerhalb selben Tag fallen, Woche, Stunde, Minute oder Sekunde. Diese Methode gibt Ihnen genauere Möglichkeit, zwei Daten zu vergleichen.

Zusatz NSDate

In der realen Welt Beispiel am häufigsten wollen Sie nur eine Einheit des Datums zu ändern. Beispielsweise eine Woche ab jetzt, Monat ab sofort oder 10 Tage ab jetzt. Siehe den folgenden Code

if let fiveDaysFromNow = userCalendar.dateByAddingUnit(NSCalendarUnit.Day, value: 5, toDate: NSDate(), options: []) {
let dateformatter = NSDateFormatter()

dateformatter.dateStyle = NSDateFormatterStyle.MediumStyle

dateformatter.timeStyle = NSDateFormatterStyle.NoStyle

print(dateformatter.stringFromDate(fiveDaysFromNow))

}

Wenn Sie drucken das Datum seiner in UTC-Zeit & es ist schwierig, herauszufinden, ob das funktioniert oder nicht. Daher bin ich Umwandlung Datum in String. Zu der Zeit, dieses Tutorial zu schreiben, das Datum ist 26. Dezember 2015. Nur einen Tag nach Weihnachten. Ich füge 5 Tage, um es. Und ich bekomme folgendes Ergebnis.

Bildschirmfoto 2015-12-26 beim 4.00.15 PM

Begrenzung der oben beschriebenen Methode ist, dass Sie nur eine Einheit von dem Datum hinzufügen. Wenn Sie möchten, Tag hinzufügen, Stunde, Minute dann folgenden Code verwenden,.

let addingPeriod = NSDateComponents()

addingPeriod.day = 5

addingPeriod.hour = 7

addingPeriod.minute = 15

if let newYearsParty = userCalendar.dateByAddingComponents(addingPeriod, toDate: NSDate(), options: []) {
let dateformatter = NSDateFormatter()

dateformatter.dateStyle = NSDateFormatterStyle.MediumStyle

dateformatter.timeStyle = NSDateFormatterStyle.ShortStyle

print(dateformatter.stringFromDate(newYearsParty))

}

In den obigen Code, den ich Hinzufügen von mehreren Einheiten zu Aktuelles Datum. Um es einfach ich das heutige Datum bin mit. Aber Sie können ein beliebiges Datum Ihrer Wahl einfügen & es werden mehrere Komponenten hinzufügen. Die Ausgabe im Debug-Bereich ist wie folgt

Bildschirmfoto 2015-12-26 beim 4.06.58 PM

Herausforderung 1: das heutige Datum ab dem nächsten Geburtstag subtrahieren & Anzeige verbleibenden Tage.

verbleibende Tage
Herunterladen Herausforderung 1 Spielplatz-Datei
Herausforderung 2: das heutige Datum ab dem nächsten Geburtstag subtrahieren & Anzeige Countdown.

Countdown
Herunterladen Herausforderung 2 Spielplatz-Datei

Gesamt 3 Stimmen
0

Sagen Sie uns, wie kann ich dieses Tutorial verbessern?

+ = Stellen Sie sicher, Mensch oder Spambot ?