Ich habe ein Stück Code, das im Grunde in zwei Teile wirkt:NSDate: Werden Werte für morgen oder gestern
Teil 1: Der Benutzer stellt ein Date mit einem UIDatePicker
. Zum Beispiel wählt der Benutzer einen Tag vor dem aktuellen Datum aus. Das ausgewählte neue Datum ist also 19.05.16 statt 18.05.16.
Teil 1 Code
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale.currentLocale()
var dateString = "May-19-2016"
dateFormatter.dateFormat = "MMMM-dd-yyyy"
var due_date = dateFormatter.dateFromString(dateString)!
Teil 2: Ich habe Code erstellt, wie viele Tage zählt, sind von dem gewählten Datum links nach dem aktuellen Datum. In diesem Beispiel sagt mein Code irgendwie 0 Tage vor morgen. Hier ist der Code für den zweiten Teil:
Zweiter Teil:
func computeDates(dueDate:NSDate)-> Int {
let currentDate = NSDate()
// Adding days to currentDate
let daysToAdd = 1
// Adding on Unit to the current instance
let calculateDate = NSCalendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.Day, value: daysToAdd, toDate: currentDate, options: NSCalendarOptions.init(rawValue: 0))
// Figure out many days from may 3rd
let cal = NSCalendar.currentCalendar()
let unit = NSCalendarUnit.Day
let components = cal.components(unit, fromDate: currentDate, toDate: dueDate, options: [])
let countLeft = components.day
return countLeft
}
print("Days left: \(computeDates(due_date)) ")
// Tests
let calc_date = computeDates(due_date)
if calc_date <= -1 {
print("Yesterday")
} else if calc_date == 0 {
print("Today")
} else if calc_date > 1 {
print("Tomorrow")
}
Im Teil 1 Beispiel habe ich ein statisches Datum, das ich verwende diesen Code zu testen. In diesem Teil habe ich den 19. Mai 2016 einen Tag voraus gesetzt. Im zweiten Teil unten in der if-Anweisung sagt es irgendwie, dass ich noch 0 Tage übrig habe und von dem, was ich versuche, zu sagen, dass es einen Tag vor dem morgigen 19. Tag geben wird.
Ein anderes Beispiel, wenn ich den 19. zum 20. ändere, will ich es "In 2 Tagen" ab jetzt sagen.
Nun, wenn ich den Tag um sagen wir, den 15. Mai (in der Vergangenheit), dann würde die if-Anweisung etwas wie Überfällig oder die Vergangenheit sagen.
Wie kann ich das lösen?
Seien Sie vorsichtig mit Ausdrücken wie "in 2 Tagen", weil sie sehr schwer zu lokalisieren sind. In einigen Sprachen ist nicht klar, auf welches Datum es sich bezieht. – Andriy