2015-02-21 3 views
6

Wie kann ich ein Array mit Wochentagen aus dem System nehmen (von NSDate, denke ich)?Wie man Wochentage Array von System in Swift bekommen?

Bis jetzt kann ich nur den aktuellen Tag nehmen, aber ich möchte in der Lage sein, alle Wochentage in einem Array zu nehmen.

Wenn der erste Tag der Woche bis Montag gesetzt ist, würde meine Array wie folgt aussehen:

[ Mon, Tue, Wed... ] 

Wenn der erste Tag der Woche Sonntag ist, würde meine Array wie folgt aussehen:

[Sun, Mon, Tue... ] 

Code:

let dateNow = NSDate() 
let calendar = NSCalendar.currentCalendar() 
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond | .CalendarUnitYear , fromDate: dateNow) 

/*This is the way how i take system time */ 

let format = NSDateFormatter() 
format.dateFormat = "EEE" 
stringDay = format.stringFromDate(dateNow) 

Antwort

20

Versuchen these properties:

Es scheint, dass sie immer Sun ... Sat Array unabhängig .firstWeekday Eigenschaft der .calendar zurückgeben. Also, Sie müssen manuell drehen.

let firstWeekday = 2 // -> Monday 

var symbols = fmt.shortWeekdaySymbols 
symbols = Array(symbols[firstWeekday-1..<symbols.count]) + symbols[0..<firstWeekday-1] 
// -> ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] 
+0

Danke! Genau was ich dachte. –

0

Wenn Sie Montag als ersten Tag haben möchten, können Sie diese Erweiterung verwenden.

extension SequenceType where Generator.Element == String { 
    func mondayFirst(withSunday: (Bool)) -> [String] { 
     var tempWeek = self as! [String] 

     let tempDay = tempWeek.first 

     tempWeek.removeFirst() 

     if (!withSunday) { 
      tempWeek.append(tempDay!) 
     } 

     return tempWeek 
    } 
} 
+0

Woher wissen Sie, ob es schon mit Sonntag beginnt? – MBH