2015-02-21 12 views
6

Sistemden haftalar ile nasıl bir dizi alabilirim (NSDate, bence)?Swift'de sistemden hafta içi dizi nasıl edinilir?

Şimdiye kadar, sadece şu anki günü alabiliyorum, fakat tüm hafta içi günlerini bir dizide alabiliyorum.

haftanın ilk günü Pazartesi olarak ayarlanırsa, benim dizi gibi görünecektir:

[Sun, Mon, Tue... ] 

: Haftanın ilk günü Pazar ise, benim dizi gibi görünecektir

[ Mon, Tue, Wed... ] 

Kod:

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) 

cevap

20

deneyin these properties:

let fmt = NSDateFormatter() 
fmt.weekdaySymbols // -> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] 
fmt.shortWeekdaySymbols // -> ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] 
fmt.veryShortWeekdaySymbols // -> ["S", "M", "T", "W", "T", "F", "S"] 
fmt.standaloneWeekdaySymbols // -> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] 
fmt.shortStandaloneWeekdaySymbols // -> ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] 
fmt.veryShortStandaloneWeekdaySymbols // -> ["S", "M", "T", "W", "T", "F", "S"] 

Onlar bakılmaksızın her zaman Sun ... Sat dizi .calendar ait .firstWeekday eşyayı geri görünüyor. Yani, el ile döndürmeniz gerekir.

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

Teşekkürler! Tam olarak ne yaptık. –

0

Pazartesi gününü ilk gün geçirmek istiyorsanız, bu uzantıyı kullanabilirsiniz.

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

Pazar günü ile başlayıp başlamadığını nereden biliyorsunuz? – MBH