Dies ist ein Code ich online gefunden, um alle Termine für die aktuelle Woche basierend auf dem heutigen Datum zu erhalten. Wenn das Datum der Anfang des Monats ist, zum Beispiel Donnerstag 01. September 2016 dann beginnt die Woche von Donnerstag und endet die Woche um Mittwoch 07 September 2016. Das stört mich wirklich, wenn das Datum das Ende des Monats ist; Sonntag 31 Juli 2016 dann wird es auf Montag beginnen und auf Sonntag in dieser Woche, die genau das ist, was ich will.Erhalten Sie alle Daten für die aktuelle Woche zurückkehrt falsch, wenn das Datum Anfang eines Monats ist
Dies könnte ein Duplikat sein, aber ich verbrachte eine Weile mit ähnlichen Fragen und ich bin immer noch fest.
Edit: Gibt es eine Möglichkeit alle Daten für die aktuelle Woche zurückzukehren, basierend auf dem aktuellen Datum (Und wenn Sie Zeit haben, in der nächste Woche auch?)
func formatDate(date: NSDate) -> String {
let format = "EEEE MMMM dd yyyy"
let formatter = NSDateFormatter()
formatter.dateFormat = format
return formatter.stringFromDate(date)
}
// =======================================================================//
// THIS WEEK DATES //
// =======================================================================//
func formattedDaysInThisWeek() -> [String] {
// create calendar
let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!
// today's date
let today = NSDate()
let todayComponent = calendar.components([.Day, .Month, .Year], fromDate: today)
let components = calendar.components([.Weekday], fromDate: today)
// range of dates in this week
let thisWeekDateRange = calendar.rangeOfUnit(.Day, inUnit:.WeekOfMonth, forDate:today)
// date interval from today to beginning of week
let dayInterval = thisWeekDateRange.location - todayComponent.day
print(thisWeekDateRange.location)
print(todayComponent.day)
// date for beginning day of this week, ie. this week's Sunday's date
if components.weekday == 1 {
print("Is a sunday")
let beginningOfWeek = calendar.dateByAddingUnit(.Day, value: -6, toDate: today, options: .MatchNextTime)
var formattedDays: [String] = []
for i in 0 ..< 7 {
let date = calendar.dateByAddingUnit(.Day, value: i, toDate: beginningOfWeek!, options: .MatchNextTime)!
formattedDays.append(formatDate(date))
}
return formattedDays
} else {
print("Not a sunday")
let beginningOfWeek = calendar.dateByAddingUnit(.Day, value: dayInterval, toDate: today, options: .MatchNextTime)
var formattedDays: [String] = []
for i in 1 ..< thisWeekDateRange.length + 1 {
let date = calendar.dateByAddingUnit(.Day, value: i, toDate: beginningOfWeek!, options: .MatchNextTime)!
formattedDays.append(formatDate(date))
}
return formattedDays
}
}
Das hat funktioniert, danke. –