Как строка дня недели может возвращаться из NSDateComponents, передавая целое число?

Предположим, я знаю день по его целочисленному значению, но я хочу получить строковое значение дня недели в локали пользователя. Можно NSDateComponents использоваться без объекта даты, чтобы как-то вернуть день (например, понедельник), передавая целое число?

В настоящее время я использую словарь по дням недели, но это явно далеко от идеала, когда речь идет о местоположении пользователя.

2 ответа

Ответ Hot Licks великолепен. Голосуй за это.

Чтобы увидеть решение бедняка, который пишет 10 строк, когда нужна только одна, вы также можете узнать, что в 2006 году было воскресенье 1 января.

let weekday = 1 // the day you want text for, 1 == sunday
var comps = NSDateComponents()
comps.year = 2006
comps.day = weekday
let calendar = NSCalendar(identifier: NSGregorianCalendar)
let d = calendar?.dateFromComponents(comps)
let f = NSDateFormatter()
f.dateFormat = "eee" // short day style, "Sun", there are more available
let dayName = f.stringFromDate(d!)

Я не вижу никакого преимущества в этом подходе:)

Получить числовой день недели, а затем использовать NSDateFormatter's weekdaySymbols (или же shortWeekdaySymbols) получить NSArray из названий дней недели.

NSDateFormatter должен иметь действительный набор NSCalendar/NSLocale, но в противном случае ему не нужно "знать" текущую дату / время.

Другие вопросы по тегам