@MTemp

Как сформировать array с датами за некий промежуток времени в swift?

Приветствую.

Есть задача сгенерить array с датами в формате 20150801, 20150802...
Допустим запихать в массив все даты начиная с сегодняшней и на 3 месяца назад.

Подскажите как это сделать?
Насколько я понимаю, нужно воспользоваться NSCalendar?

Спасибо.
  • Вопрос задан
  • 1157 просмотров
Решения вопроса 1
tikhonov666
@tikhonov666
iOS, Swift, Objective-C
Вам понадобится:
  • NSDateFormatter для установки формата даты
  • NSDateComponents для операций со сложением/вычитанием единиц времени (дни, месяцы, годы и т.д.)
  • NSCalendar для того чтобы указать тип календаря ( currentCalendar(), Григорианский или какой-то еще)
let dateFormatter = NSDateFormatter()
dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle
let gmtTimeZone = NSTimeZone(abbreviation: "GMT")
dateFormatter.timeZone = gmtTimeZone
dateFormatter.dateFormat = "yyyyMMdd"

var dates = [String]()

let threeMonthAgoComponent = NSDateComponents()
threeMonthAgoComponent.month = -3

var date = NSDate()
let calendar = NSCalendar.currentCalendar()
let lastDate = calendar.dateByAddingComponents(threeMonthAgoComponent, toDate: date, options: NSCalendarOptions(rawValue: 0))

let dayAgoComponent = NSDateComponents()
dayAgoComponent.day = -1

while (date != lastDate) {
    date = calendar.dateByAddingComponents(dayAgoComponent, toDate: date, options: NSCalendarOptions.MatchFirst)!
    dates.append(dateFormatter.stringFromDate(date))
}

print(dates)


+ ссылки
stackoverflow.com/how-do-i-add-1-day-to-a-nsdate
stackoverflow.com/nsdate-get-year-month-day
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы