2016-09-26 3 views
-4

Wie bekomme ich einen Wochentag von morgen bis heute vor heute. Zum Beispiel, wenn heute Montag ist, muss ich den Tag Dienstag, Mittwoch, bis Sonntag bekommen. Kann mir bitte jemand sagen, wie man das erreicht?Swift - Tag der Woche Gebietsschema

Dank

+0

Geist mich, warum die downvote erzählen? – Voyager

Antwort

3

Es gibt ein paar Möglichkeiten, es zu tun, in Abhängigkeit davon, in welchem ​​Format Sie die Ausgabe mögen. Vorausgesetzt, dass Sie eine Reihe von ganzen Zahlen in Folge wollen, könnten Sie verwenden:

let today = Date() 
let gregorian = Calendar(identifier: .gregorian) 
let dateComponents = gregorian.dateComponents([.weekday], from: today) 
let todaysWeekday = dateComponents.weekday! 
var otherWeekdays: [Int] = [] 
for i in 1...6 { 
    otherWeekdays.append((todaysWeekday - 1 + i) % 7 + 1) 
} 
// assuming today = 2 (Monday), otherWeekdays will contain [3, 4, 5, 6, 7, 1] 

Wenn Sie auch ein Array von Strings mit den Namen der Tage möchten, können Sie eine einfache Lookup tun, wenn Sie nicht über die Lokalisierung egal .

let weekdayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] 
let otherWeekdayStrings = otherWeekdays.map({weekdayNames[$0 - 1]}) 
// otherweekdayStrings will contain ["Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 

Wenn robuste Lokalisierung erforderlich ist und Sie wollen nur die Saiten, können Sie eine DateFormatter verwenden und so etwas tun:

let today = Date() 
let formatter = DateFormatter() 
formatter.dateFormat = "EEEE" 
var otherweekdayStrings: [String] = [] 
for i in 1...6 { 
    let timeIntervalToAdd = TimeInterval(i * 86400) 
    otherweekdayStrings.append(formatter.string(from: today.addingTimeInterval(timeIntervalToAdd))) 
} 
// Same output as previous 
Verwandte Themen