Wie hinzufügen von Tagen zu einem Datum in swift 3
Bin ich immer der Anzahl der Tage,Start-und Enddatum aus einem Dienst. Ich möchte die Liste aller Termine zwischen dem start-Datum und end-Datum. Lassen Sie uns sagen, mein Startdatum ist 2017/08/15-und Ende-Datum ist 2017/08/16 und die Anzahl der Tage 2.
Aber ich bin immer die aktuelle Liste wie diese.
##### CONVERTED STRING DATE 2017-08-16
##### CONVERTED STRING DATE 2017-08-17
##### CONVERTED STRING DATE 2017-08-18
Und ich haben ein date wie dieses
Startdatum 2017/08/23 Enddatum 2017/09/01 und die Anzahl der Tage 8. dann bekomme ich die Liste wie diese.
##### CONVERTED STRING DATE 2017-08-24
##### CONVERTED STRING DATE 2017-08-25
##### CONVERTED STRING DATE 2017-08-28
##### CONVERTED STRING DATE 2017-08-29
##### CONVERTED STRING DATE 2017-08-30
##### CONVERTED STRING DATE 2017-08-31
##### CONVERTED STRING DATE 2017-09-01
Dies ist, wie bekomme ich die Datums-array
numberOfDates=Int(ceil(numOfDay))
//numberOfDates=numberOfDates-1
let arrayDates=self.generateDates(startDate: startDate, addbyUnit: .day, value: numberOfDates)
Dies ist, wie mein date Berechnungsmethode
internal func generateDates(startDate :Date?, addbyUnit:Calendar.Component, value : Int) -> [Date]
{
//print("####START DATE#######\(startDate)")
var calendar = Calendar.current
calendar.timeZone=TimeZone.current
var datesArray: [Date] = [Date] ()
for i in 0 ... value {
var addAmount:Int!
if(value==0)
{
addAmount=0
}
else
{
addAmount=1
}
if let newDate = calendar.date(byAdding: addbyUnit, value: i + addAmount, to: startDate!) {
let strDayName=self.getDayName(mydate: newDate)
if (strDayName != "Saturday" && strDayName != "Sunday")
{
datesArray.append(newDate)
}
}
}
return datesArray
}
Mein problem ist manchmal das Datum Liste falsch ist (1. Szenario), aber den richtigen in der 2. Szenario.
InformationsquelleAutor user1960169 | 2017-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer einfachen while-Schleife bekommen, was Sie brauchen.
Beispiel:
Edit: Oder Sie können ändern, Ihre Umsetzung etwas, wenn das Enddatum im Voraus
InformationsquelleAutor nayem
Ihr macht es echt kompliziert.Verwenden Sie einfach die einfache date-Klasse Methoden für die Differenz und generieren neue Daten mit einer for-Schleife und der Calendar-Klasse.
Nicht verwenden 86400 Sekunden als Dauer eines Tages (man denke an die Sommerzeit)
danke.Ich änderte den code.
die 86400 in der zweiten Zeile ist nur ein Beispiel, weil man das end-Datum vom server
InformationsquelleAutor Alan