2015-02-21 17 views
6

Làm cách nào để lấy một mảng có ngày trong tuần từ hệ thống (từ NSDate, tôi nghĩ)?Làm thế nào để nhận mảng ngày trong tuần từ hệ thống trong Swift?

Cho đến bây giờ, tôi chỉ có thể lấy ngày hiện tại, nhưng tôi muốn có thể thực hiện tất cả các ngày trong tuần trong một mảng.

Nếu ngày đầu tiên của tuần được thiết lập để Monday, mảng của tôi sẽ như thế nào:

[ Mon, Tue, Wed... ] 

Nếu ngày đầu tiên của tuần là chủ nhật, mảng của tôi sẽ như thế nào:

[Sun, Mon, Tue... ] 

Mã số:

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) 

Trả lời

20

Hãy thử 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"] 

Dường như chúng luôn trả về Sun ... Sat mảng bất kể thuộc tính .firstWeekday của .calendar. Vì vậy, bạn phải xoay theo cách thủ công.

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

Cảm ơn! Chính xác những gì tôi nedd. –

0

Nếu bạn muốn có thứ hai là ngày đầu tiên, bạn có thể sử dụng tiện ích mở rộng này.

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

làm thế nào để bạn biết liệu nó bắt đầu với chủ nhật đã? – MBH

Các vấn đề liên quan